找到
3
篇与
admin
相关的结果
-
系统管理 runlevel命令查看运行级别:N 3,N代表上一个级别,3代表当前级别,N是None的意思,表示没有上一个运行级别 修改当前运行级别:init 5 系统默认运行级别:一开机就进入这个级别,配置文件在 /etc/inittab /etc/rc.d/rc.local 文件:每次系统启动时会自动执行里面的内容,软链接 /etc/rc.local grub配置文件:源文件 /boot/grub/grub.conf,软链接 /etc/grub.conf,/boot/grub/menu.lst grub加密:grub-md5-crypt 命令用于生成密码 grub菜单加密,password --md5 生成的密码,必须写在grub配置文件timeout和splashimage字段之间 进入单用户模式:主要用于破解修改密码 开机时按任意键进入grub菜单,按e,选择内核那一行,按e编辑,添加“ 1”空格和一个数字1,1代表单用户模式,回车确认,再按b启动系统就能进入单用户模式 进入光盘救援模式: BIOS设置光盘启动(+号改变启动顺序),chroot /mnt/sysimage 命令改变根目录,由光盘的模拟根目录切换为硬盘中真正的系统根目录 服务分类: RPM包默认安装的服务:又分为独立的服务 和 基于xinetd的服务 源码包安装的服务 chkconfig --list [服务名]:列出RPM默认安装服务的自启动状态,查出来有0-6的表示是 独立的服务 独立服务管理: 启动管理:1、使用 /etc/init.d/ 目录中的启动脚本启动服务 ,/etc/init.d/httpd start 【推荐】 2、使用 service 命令启动独立的服务,service 独立服务名 start | stop | restart ,service httpd restart 自启动管理:1、chkconfig [--level 运行级别] [独立服务名] [on | off] ,chkconfig --level 2345 httpd on ,默认就是 --level 2345 ,chkconfig httpd on 也行 2、修改 /etc/rc.local 文件,添加标准启动命令,即可设置服务自启动 【推荐】 3、ntsysv [--level 运行级别] ,不加运行级别默认为3 基于xinetd的服务管理: 启动管理:修改 /etc/xinetd.d/基于xinetd的服务名称 文件,vi /etc/xinetd.d/telnet ,disable改为no,然后重启xinetd服务(同独立服务的启动方式) 自启动管理:1、chkconfig 服务名 on | off ,基于xinetd的服务,没有自己的运行级别,依靠xinetd服务的运行级别,不可指定 --level 选项 2、使用ntsysv命令 源码包安装的服务: 启动管理:安装目录启动,例如apache服务,/usr/local/apache2/bin/apachectl start | stop 自启动管理:修改 /etc/rc.d/rc.local 文件,添加标准启动命令,即可设置服务自启动 让源码包服务被服务管理命令识别: service 命令其实就是在 /etc/init.d/ 目录中查找是否有服务的启动脚本 让源码包的apache服务能被service命令管理启动,只需把启动脚本链接到 /etc/init.d/ 目录下 ln -s /usr/local/apache2/bin/apachectl /etc/init.d/ 让源码包的apache服务能被chkconfig命令管理自启动 1、不仅需要使他能被service命令管理(同上) 2、还要修改服务的启动脚本,在脚本开头添加 # chkconfig:运行级别 启动顺序 关闭顺序 # description:说明,内容随意 3、然后使用命令 chkconfig --add 服务名 把服务加入到chkconfig命令的管理,--del 删除 让ntsysv命令可以管理源码包apache 同chkconfig的管理机制,能被chkconfig管理就能被ntsysv管理 ps查看系统中所有进程:是静态显示的 ps aux 命令:不可以加 - ,会报错,遵守的是BSD操作系统格式 ps -le 命令:使用Linux标准命令格式 top查看系统进程:动态显示的,可设置更新间隔 pstree查看进程树:-p显示进程的PID,-u显示进程的所属用户 kill命令:kill [信号] PID,常用1信号让进程重启,9信号强制终止进程 kill -9 2246 killall命令:killall [信号] [选项] 进程名,-i 交互式,-I(大写i)忽略进程名大小写 pkill命令:pkill [信号] [选项] 进程名,-t 终端号:按照终端号踢出用户 当前登录的终端,只能管理当前终端的工作,不能管理其他终端的工作。把命令放入后台,只能在当前登录终端执行,退出当前登录终端后,命令就会停止 把命令放入后台: 1、“命令 &”,这种方法放入后台的命令,在后台是执行状态。但是注意,放入后台执行的命令不能与前台有交互,否则放入后台只能暂停,不能执行。 2、ctrl+z 快捷键,这种方法放入后台的命令,在后台都是暂停状态 后台命令管理: 查看后台的工作:jobs,-l(小写L)显示工作的PID 将后台暂停的工作恢复到前台执行:fg %工作号 %可以省略 将后台暂停的工作恢复到后台执行:bg %工作号 %可以省略 后台命令脱离登录终端运行: 1、写入 /etc/rc.local 文件 2、定时任务 3、“nohup 命令 &”,举例 nohup tar -zcf etc.tar.gz /etc/ 系统资源查看: vmstat命令监控系统资源:vmstat 刷新延时 刷新次数 dmesg显示开机时内核检测信息 free命令查看内存使用状态 查看cpu信息:cpu主要信息保存在 /proc/cpuinfo 查看本机登录用户信息: w 命令,第一行与top的第一行一样 who 命令,比w命令更加简洁 uptime命令:显示系统的启动时间和平均负载,就是top命令的第一行 查看系统与内核相关信息:uname [选项] ,-a 查看系统所有相关信息,-r 查看内核版本, -s 查看内核名称 判断当前系统的位数:”file 系统命令“,例如 file /bin/ls,可以判断位数 查询Linux系统的发行版本,用 ”lsb_release -a“ 命令查看 系统定时任务:定时任务和脚本中,都写绝对路径 at一次性定时任务:at命令执行需要atd服务的支持,atd是独立服务需要启动 系统默认没有 /etc/at.allow 白名单文件,只有 /etc/at.deny 黑名单文件,可以编辑这两个文件设置哪个用户允许使用at命令(对root不生效)。默认按 at.deny 文件进行访问控制,如果有 at.allow 文件,此文件优先级更高,则按照此文件进行访问控制,at.deny 不生效。如果两个文件都不存在,则只有root用户可以使用at命令。 at [选项] 时间,ctrl+d保存at任务 atq:查询当前服务器上的at工作 at -c 工作号:查询指定at任务的具体内容 atrm 工作号:删除指定的at任务 crontab循环定时任务:crontab命令执行需要crond服务的支持,crond是独立服务需要启动 1、crontab [选项]:-e 编辑定时任务,-l 查询定时任务,-r 删除当前用户所有的crontab任务,-u 用户名:修改或删除其他用户的crontab任务(只有root可用) crontab命令也有 /etc/cron.allow 和 /etc/cron.deny ,原则与at相同 crontab -e 命令定义定时任务时,默认执行身份是当前用户 2、修改 /etc/crontab 配置文件来定义定时任务:可以指定定时任务的执行身份,此文件只有root才可以修改 3、把定时执行的脚本放到 /etc/cron.{hourly,daily,weekly,monthly} 目录中,/usr/bin/run-parts 命令会让目录中所有可执行文件依次执行(/etc/crontab中也可以用run-parts来执行某个目录中的所有脚本) 时间格式: * * * * *,代表 一小时中的第几【分钟】 一天中的第几个【小时】 一个月中的第几【天】 一年中的第几个【月】 一周中的【星期】几 * 代表任何时间 , 逗号用于分隔不连续的时间 - 代表连续的时间范围 */n 代表每隔多久执行一次 星期几和第几天不要同时出现,他们都是以天为单位,若同时出现则是 或 的关系 anacron会使用一天,一周,一月作为检测周期,检测 /var/spool/anacron 目录中的cron.{daily,weekly,monthly} 文件用来判断是否有定时任务错过而没有执行 Centos5之后的版本中,anacron不再是单独的服务,而变成了系统命令,/etc/cron.{daily,weekly,monthly} 目录下的脚本,是被anacron调用的,详细调用过程参考 /etc/anacrontab 配置文件,注意不接管cron.hourly 日志文件: /var/log/wtmp:二进制文件,用last命令查看,系统所有登录过的用户信息 /var/log/lastlog:二进制文件,用lastlog命令查看,所有用户最后一次登录时间 /var/log/btmp:二进制文件,用lastb命令查看,错误登录信息日志 /var/run/utmp:二进制文件,用w,who,users等命令查看,记录当前已登录用户的信息 /var/log/message:记录系统重要信息 /var/log/secure:记录验证和授权方面的信息 日志服务rsyslogd: RPM方式安装的服务默认会把日志记录在 /var/log/ 下,源码安装的服务日志在源码包指定的目录中。但是这些日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志。 rsyslogd服务的配置文件在 /etc/rsyslog.conf : 格式:服务名称 连接符号 日志等级 日志记录位置 连接符号:“ . ”代表只要比后面等级高的日志都记录下来,“ .= ”代表只记录等于此日志等级的,“ .! ”代表记录不等于此日志等级的 日志等级:“ * ” 代表所有日志等级,none 代表该服务的所有日志都不记录 日志位置:可以写用户名,就会吧日志发送给某个用户,这个用户需要在线。“ * ”代表发送给所有用户 日志轮替:切割就是将一个大的日志文件拆分成多个小文件,例如每天,每周等进行保存。轮替就是周期性地处理日志文件,包括切割、重命名、压缩、删除等一系列操作。例如每周轮替alert.log日志,轮替时上周的日志文件改名为alert.log-20251129,创建新的日志文件alert.log,之后的新日志都保存到alert.log中,以此类推,rotate 2代表会保留两次轮替的旧日志文件 logrotate轮替配置文件:/etc/logrotate.conf weekly:每周对日志文件进行一次轮替 rotate 2:保留2个日志文件 通过RPM方式安装的服务 日志默认就可以轮替 被rsyslog管理的服务日志,设置轮替加入logrotate后,要重启rsyslog服务。如果不是被rsyslog管理的服务日志,加入轮替后,则还需要重启这个服务。否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。 加入轮替方法: 1、直接在 /etc/logrotate.conf 中写入日志的轮替策略 2、在 /etc/logrotate.d/ 中新建该日志的轮替文件,在该文件中写入轮替策略 例如自己在rsyslog配置文件中创建的日志加入到轮替,logrotate配置文件内容这样写: /var/log/alert.log { weekly rotate 5 create shaderscripts postrotate /bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2> /dev/null) &> /dev/null endscript } -
shell { /etc/shells 文件查询Linux支持的shell 调用shell脚本标准方法使用路径运行,也可以通过bash调用脚本 echo -e 选项才可以识别反斜杠的控制字符,例如 \n \t history用来查询历史命令,文件保存在 ~/.bash_history。 /etc/profile 文件的HISTSIZE可以设置历史命令保存条数 标准输出重定向:命令 > 文件(覆盖) 命令 >> 文件(追加) 标准错误输出重定向:命令 2> 文件 命令 2>> 文件 正确错误输出重定向保存到同一个文件:命令 &>> 文件 正确错误输出分别重定向到各自的文件:命令 >> 文件1 2>> 文件2 判断命令是否正确执行可以用:命令 && echo yes || echo no wc 命令:-l 统计行数,-w 统计单词数,-c 统计字节数,-m统计字符数。默认 行,单词,字节 pstree查看进程树 单引号。在单引号中所有的特殊符号,如 $ 和 `` (反引号)都没有特殊含义。 双引号。在双引号中特殊符号都没有特殊含义,但是 $,`` 和 \ 是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 ( )小括号中的命令会新开一个子shell,在子shell中运行。运行完返回当前shell {}大括号格式要求和左括号需要有空格,命令结束要有 ; 分号。 { name=test;echo $name;} 调用未定义的变量,默认显示空。定义变量为空,也会显示空,易混淆导致错误。可以用 set -u 命令临时设定,调用未声明的变量就会报错 环境变量使用 export 声明 环境变量查询 set 或者 env 命令 locale 命令查看系统当前语系,系统环境变量 LANG 配置文件位置 /etc/sysconfig/i18n 系统环境变量 PS1 在 /etc/bashrc 预定义变量: $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果为非0(具体是哪个数,由命令自己来决定),则上一个命令执行不正确。 $$:当前进程的进程号(PID) $!:后台运行的最后一个进程的进程号(PID) 预定义变量中的位置参数变量: $n:n为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如${12} $*:代表命令行中所有的参数,$* 把所有的参数看成一个整体 $@:也代表命令行中所有的参数,不过 $@ 把每个参数区分对待 $#:代表命令行中所有参数的个数 echo "'$*' is $":单引号中的没有特殊含义,但是此处整体还被双引号包括,所以还是会显示特殊含义。需要用转义字符 echo "$ is $*" 接收键盘输入:read 选项 变量名 -p "提示信息",等待输入时,输出提示信息 -t 秒数,指定等待时间 -n 字符数,只接受指定的字符数 -s,隐藏输入的数据 变量名可以自定义,如果不指定变量名,会把输入保存到默认变量REPLY。如果提供了一个以上的变量名,则输入分为若干项,一个接一个地赋予各个变量,最后一个变量取得剩余的所有字 declare声明变量类型: 声明数组变量 标准格式:declare -a array[0]="hello" 也可以直接写 array[0]="hello"。调用数组用 ${array[0]} 的方式,${array[*]} 为数组所有内容 declare -x 和 export 同为声明环境变量 + 取消声明的类型,+i,+x -p 查询变量的声明类型 -r 将变量声明为只读变量。一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r 取消只读属性 数值运算:shell默认变量为字符串型 a=1;b=2 直接声明c为整数型 declare -i c=$a+$b,就可以进行数值运算 默认字符串型进行数值运算可以用 (($a+$b)) 或 [$a+$b] ,用双小括号括起来,c=$(($a+$b)) c=$(expr $a + $b):expr是系统命令,用 $() 引用系统命令。使用时 + 号两侧必须有空格隔开 let c=$a+$b 或 let c=a+b,let的命令格式比较宽松 ”source 配置文件“ ,同 “. 配置文件”,用于调用配置文件 . 配置文件/etc/issue 本地登录前的欢迎信息 /etc/issue.net 远程登录前的欢迎信息,需要在 /etc/ssh/sshd_config 中打开 /etc/motd 正确登录后的欢迎信息,不管本地登录还是远程登录 正则表达式: 匹配所有内容,标准写法是 " .* ",当然任意字符加 * 都可以表示匹配所有内容,如" a* "。* 表示前一个字符匹配0次或任意多次 " ^$ " 匹配空白行,grep -v "^$" ,-v取反,可以匹配除空白行外的内容 grep " aaa* " txt ,匹配包含2个及2个以上a字符的内容 \{n, \} 表示前面的字符至少出现n次,egrep命令或grep -E 不需要加 \ 转义符 \{n\} 表示前面的字符恰好出现n次 \{n, m\} 表示前面的字符至少出现n次,最多m次 cut 提取列,默认用制表符分隔,不支持识别空格分隔 printf 在命令行中用单引号,在awk中为了区分用双引号 awk编程:awk '条件1{动作1} 条件2{动作2}...' 文件名 1、awk是一行一行地读的,依次把数据赋予$0,$1,$2等变量。$0代表此行的整体数据,$1代表第1字段,$2代表第2字段。 2、接着判断条件,如果条件成立则执行动作,否则读入下一行数据。如果没有条件,则每行都执行动作。 3、读入下一行数据,重复以上步骤。 awk默认以制表符或空格作为分隔符 $0代表当前读入行的整行数据 $n代表目前读入行的第n个字段 NR表示当前awk所处理的行,在总数据的第几行 NF表示当前行拥有的字段总数 FS用户定义分隔符,例 {FS=":"},用 : 作为分隔符 // 中写字符串或正则表达式,字符串必须用 // 包含,awk命令才能正确识别 awk '$2~/tg/ {print $6}' txt:第2字段包含“tg”字符串,则打印第6字段。此处 // 中是字符串 awk '/lm/ {print}' txt:包含lm,打印整行。此处 // 中是正则表达式 指定分隔符需要在此动作前加BEGIN 多个 条件{动作} 可以用空格分割,也可以用回车分割。 在一个动作中,如果需要执行多个命令,需要用 ; 分割,或用回车分割。 在 awk 中,变量的赋值与调用都不需要加入“$”符。 条件中判断两个值是否相同,使用 == ,以便和变量赋值进行区分。 awk函数的定义方法: function 函数名(参数列表) { 函数体 } awk -f 调用awk脚本 sed [选项] '动作' 文件名: 选项: -n:一般 sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过 sed命令处理的行输出到屏幕。 -e:允许对输入数据应用多条 sed 命令编辑。可以执行多个动作,之间用 ; 分隔或回车分隔 -i:用 sed的修改结果直接修改读取数据的文件,而不是由屏幕输出 动作: a \ :追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 c \ :行替换 i \ :插入 d:删除指定的行 p:打印输出指定的行 s:字符串替换 sort [选项] 文件名:默认用每行开头的第一个字符进行排序 -f:忽略大小写 -b:忽略每行前面的空白部分 -n:以数值型进行排序,默认使用字符串型排序 -r:反向排序删除重复行。就是 uniq 命令 -u:删除重复行。就是 uniq 命令 -t:指定分隔符,默认是分隔符是制表符 -k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾) uniq [选项] 文件名:用于取消重复行,同 sort -u。-i 选项忽略大小写 条件判断: test 命令 或者 用 [ ] 包含,中括号内部两边需要空格隔开。 引用变量一般都用双引号包含,"$var" 判断权限只能判断整个文件有没有某个权限,所有者 所属组 其他人 任意一个有权限就为真 if单分支条件判断: if [ 条件判断式 ];then 程序 fi 可以用 ; 分隔,也可以换行分隔 if [ 条件判断式 ] then 程序 fi 双分支if条件语句: if [ 条件判断式 ] then 条件成立时执行的程序 else 条件不成立时执行的程序 fi 多分支if条件语句: if [ 条件判断式1 ] then 条件判断式1成立时,执行的程序1 elif [ 条件判断式2 ] then 条件判断式2成立时,执行的程序2 elif [ 条件判断式3 ] then 条件判断式3成立时,执行的程序3 ... else 所有条件都不成立时,执行的程序 fi 多分支case条件语句:每个分支用双分号 ;; 结尾,表示该程序段结束 case $变量名 in "值1") 变量的值等于值1,执行的程序1 ;; "值2") 变量的值等于值2,执行的程序2 ;; ... *) 如果都不是以上的值,则执行此程序 ;; esac for循环: for 变量 in 值1 值2 值3 ... do 程序 done for (( 初始值;循环条件;变量变化 )) do 程序 done while循环: while [ 条件判断式 ] do 程序 done until循环:条件不成立才进行循环 until [ 条件判断式 ] do 程序 done 成立等号要加1,不成立没等号要加1 函数:不支持形参,一般用位置参数变量。相当于定义了一个命令。add 10 20 function 函数名 () { 程序 } exit语句:直接退出脚本,返回值 $? 可以查看 exit 返回值 break语句:跳出当前整个循环 continue语句:跳过当前单次循环 -
基础 格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。 格式化目的是为了写入文件系统,分配iNode,block等 iNode存放i节点号,时间,权限,文件位置 sdb5表示第二块SATA接口硬盘的第一个逻辑分区 软链接命令要写绝对路径,硬链接没有要求 umask配置文件位置在 /etc/profile whatis用来查看命令拥有哪个级别的帮助;whereis只能搜索系统二进制命令,同时可以查到帮助文档的位置;which也是搜索系统命令,如果这个命令有别名,还可以找到别名命令 locate命令搜索文件名,只要包含关键字就能搜出来,手动更新locate数据库命令updatedb,配置文件位置/etc/updatedb.conf find用于匹配文件名,是完全匹配(通配符);grep用于匹配字符串,查找文件内容,是包含匹配(正则表达式) alias别名命令,配置文件可以写在 ~/.bashrc,别名优先级比系统命令高。修改后 source ~/.bashrc 重新加载配置文件立即生效。单独的 . 也能代表source命令,. ~/.bashrc 与 source ~/.bashrc 相同。文件名的 . 代表隐藏文件。 -rw-r-xr--+ +是ACL权限 drwsrwsrwt. s,t是SUID,SGID,SBIT权限 tar -zxvf test.tar.gz -C /tmp 解压到指定位置,-C选项必须在压缩包名字后面 tar -jxvf test.tar.bz2 -C /tmp test/123 解压包中的特定文件到指定位置 普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行 普通用户可以修改所有者是自己的文件的权限 配置IP地址文件位置 /etc/sysconfig/network-scripts/ifcfg-eth0 netstat -rn 查网关 自动挂载文件位置 /etc/fstab,mount -a 命令使系统根据此配置文件自动挂载,同时自动检查此配置文件错误 驱动以模块的形式放入硬盘,位置在 /lib/moudules/ vim配置文件位置 ~/.vimrc yum是二进制包的在线安装方法 未安装软件包用包全名和绝对路径,已安装软件包在任意路径用包名就可以,因为有RPM包数据库。RPM包的数据库位置在 /var/lib/rpm/ RPM包安装的Apache: 启动:service httpd start 或 /etc/rc.d/init.d/httpd start|stop|restart|status(标准方法)service命令就是搜索此位置 /etc/init.d -> rc.d/init.d/ 网页位置:/var/www/html/ 配置文件位置:/etc/httpd/conf/httpd.conf RPM包安装不指定位置,用默认位置service命令可以直接进行启停等操作,RPM包数据库记录了安装位置,可以用卸载命令删除干净 源码包要指定位置,源码包没有数据库记录安装位置,没指定位置的话要各个位置删 RPM包: 安装:rpm -ivh 包全名 升级或安装:rpm -Uvh 包全名 仅升级:rpm -Fvh 包全名 卸载:rpm -e 包名 -q查询 -a所有 -i软件包详细信息 -p未安装的软件包 -l列出软件包所有的文件列表和软件所安装的目录 -f查询系统文件所属软件包 -R软件包的依赖性 软件包是否安装:rpm -q 包名 所有已安装的软件包:rpm -qa 已安装软件包的详细信息:rpm -qi 包名 未安装软件包的详细信息:rpm -qip 包全名 列出已安装软件包的文件列表和完整安装目录:rpm -ql 包名 列出未安装软件包的文件列表和完整安装目录:rpm -qlp 包全名 系统文件属于哪个RPM包:rpm -qf 系统文件名 已安装软件包的依赖关系:rpm -qR 包名 未安装软件包的依赖关系:rpm -qRp 包全名 校验(内容,大小,权限,路径等是否改变):rpm -V 包名 rpm -Vf 系统文件名 新系统记得导入数字证书 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 提取包中的某个文件rpm2cpio 包全名 | cpio -idv .这个文件的绝对路径 rpm2cpio /mnt/cdrom/Packages/httpd-2.2.15-53.el6.centos.x86_64.rpm | cpio -idv ./etc/httpd/conf/httpd.conf yum源配置文件位置 /etc/yum.repos.d/ 默认CentOS-Base.repo生效 yum卸载b包会把依赖b的a包也卸载,避免留下损坏的软件包,那么依赖a的软件包会出现问题 yum无所谓包名和包全名,都写包名就行。包名和包全名只有在RPM包手工安装时要区分 査询yum源服务器上所有可安装的软件包列表:yum list 查询yum源服务器中是否包含某个软件包:yum list 包名 搜索yum源服务器上所有和关键字相关的软件包:yum search 关键字 查询指定软件包的信息:yum info 包名 安装:yum -y install 包名 升级:yum -y update 包名 卸载:yum remove 包名 列出所有可用的软件组列表: yum grouplist 列出软件组中包含的软件:yum groupinfo 软件组名 安装指定软件组,组名可以由 grouplist 查询出来:yum groupinstall 软件组名 卸载指定软件组:yum groupremove 软件组名 ps aux 查看系统中所有运行的进程 生成补丁:diff -Naur 旧文件 新文件(注意要写绝对路径,补丁文件会记录此路径) 打入补丁:patch -pn < 补丁文件(补丁是打到旧文件的,所以取消的是旧文件的目录级数,n是数字代表取消补丁文件中的n级目录) /etc/passwd 用户信息文件 用户名:密码标识:用户ID:初始组ID:用户说明:用户的家目录位置:登录shell 用户的权限绑定在UID之上,0是超级用户的UID,把其他用户的UID改成0,就会升级成超级用户。 /etc/shadow 影子文件 内容解析: 第1列:用户名 第2列:加密过的密码(在密码前加 ! 密码失效,用户无法登录。伪用户无法登陆,密码是 !! 或 * ,创建的新用户不设定密码,也是 !! ,代表没有密码无法登陆。) 第3列:密码最近更改的时间(只要改密码这个值就会更新) 第4列:两次密码修改的间隔时间,例如3代表密码修改后,再过3天才能再次修改(和第3字段相比) 第5列:密码有效期(和第3字段相比只要改密码了,即第3列更新了,就能继续用) 第6列:密码到期前的警告天数(和第5字段相比) 第7列:密码过期后的宽限天数,默认为空即-1代表无限宽限(和第5字段相比) 第8列:用户失效时间(真正的密码失效时间,到期之后会在密码前加 ! ) 第9列:保留位 /etc/group 组信息文件 组名:组密码标识:组ID:组中的其他用户 初始组:每个用户初始组有且只有一个,一般都是和用户名相同的组作为初始组 附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组 /etc/gshadow 组密码文件 /home/ 用户家目录 /var/spool/mail/ 用户邮箱目录 添加一个用户就是操作写入了这六个文件 /etc/skel/ 用户模板目录(新建用户的家目录会有这些模板文件) useradd添加用户的默认值文件位置在 /etc/deafult/useradd 和 /etc/login.defs /etc/deafult/useradd INACTIVE=-1:/etc/shadow 中的第7列宽限天数的默认值 EXPIRE= :/etc/shadow 中的第8列密码失效时间的默认值,默认是空,代表永久有效 /etc/login.defs UMASK 077 建立用户时创建的家目录的默认权限 USERGROUPS_ENAB yes 默认删除用户时,同时删除用户的初始组 passwd -l 用户名:锁定用户,会在 /etc/shadow 密码前加入 !! ,-u 解锁 passwd --stdin 用户名:可以将通过管道符输出的数据作为用户的密码,主要在批量添加用户时使用,例如 echo "123" | passwd --stdin user1 chage -d 0 用户名:把 /etc/shadow 第3列密码最近修改日期变为0,这样用户一登录就要修改密码 usermod -G 组名 用户名:修改用户的附加组,就是把用户加入其他用户组 usermod -l 新名 旧名:修改用户名,不建议使用 userdel -r :删除用户同时删除用户的家目录 su 用户名:切换用户 su - 用户名:连带用户的环境变量一起切换,su - user1 su -c "命令" 用户名:以其他用户身份执行命令,su -c "ls -la /home" user1 添加组:groupadd 组名 删除组:groupdel 组名 把用户添加进组或从组中删除 gpasswd gpasswd -a 用户名 组名:把用户添加进组 gpasswd -d 用户名 组名:把用户从组中删除 id 用户名:查看用户信息 设定ACL权限:setfacl -m u:用户名:权限 文件名 setfacl -m g:用户组名:权限 文件名 删除指定用户和用户组的ACL权限:setfacl -x u:用户名 文件名 setfacl -x g:用户组名 文件名 删除文件的所有ACL权限:setfacl -b 文件名 对目录递归赋予ACL权限加参数 -R:setfacl -m u:user1:rwx -R /test/ (只对已经存在的文件生效) 设定ACL默认权限:setfacl -m d:u:user1:7 -R /test/ (之后新建的文件的默认权限,对之后的新建文件生效) 递归赋予ACL权限会导致权限溢出,例如赋予权限是rx,目录正常权限,文件却是最大权限 sudo:给普通用户赋予部分管理员权限 visudo:赋予普通用户权限命令,赋予的权限越详细,普通用户得到的权限越小 格式:用户名/%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径) 组名前加% 省略即为root例子:user1 ALL=/sbin/shutdown -r now sudo -l:查看可用授权 4代表SUID 2代表SGID 1代表 SBIT umask第一位代表这个权限 SetUID:针对可执行文件,用户要对此文件有执行权限,命令执行者在执行有SUID的程序时,是以该程序的所属者身份执行的 例如passwd命令 chmod u+s 可执行文件名 chmod 4755 可执行文件名 rws SetGID:针对可执行文件,用户要对此文件有执行权限,命令执行者在执行程序时,组身份升级为该程序文件的所属组 例如locate命令 针对目录,用户要对此目录有7权限,普通用户新建的文件的默认所属组是这个目录的所属组 chmod g+s 可执行文件名/目录 chmod 2755 可执行文件名/目录 rws StickyBIT:针对目录,用户要对此目录有7权限,如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root 可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。 chmod o+t 目录 chmod 1755 目录 rwt 例如/tmp/目录 文件系统属性chattr权限:chattr [+-=] [iae] 文件名或目录名 chattr +i test/ i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据,等于不能对这个文件做任何操作;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件 可以理解为insert a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除 可以理解为append 查看文件系统属性lsattr:-a显示所有文件和目录 -d显示目录属性 lsattr -d test/ 常用硬盘管理命令: df -ahT:a显示特殊文件系统,h人性化显示,T显示文件系统 du -ahs 目录或文件名:a显示每个子文件的磁盘占用量,h人性化显示,s统计总占用量 df是统计空间大小的,统计的剩余空间大小是准确的,du用于统计文件大小是准确的 dumpe2fs /dev/sda1:显示磁盘状态,-h显示超级块状态 fdisk -l:查看系统所有硬盘及分区 file 文件名:判断文件类型 type 命令名:判断命令类型 查看硬盘分区的uuid:dumpe2fs /dev/sdb1 或 ls -l /dev/disk/by-uuid/ 用fdisk命令分区只识别MBR分区,GPT分区要用parted命令 1.分区 2.格式化建立文件系统 3.挂载 free命令查内存,-h人性化显示 buffers缓冲,缓冲CPU把数据写入到硬盘。cache缓存,提升CPU从硬盘读取数据 磁盘配额是限制普通用户在分区上使用磁盘空间和文件个数的 磁盘配额需要关闭SELinux,getenforce查看,setenforcing 0暂时关闭。永久关闭配置文件在 /etc/selinux/config