此篇文章内容是我很久以前在印象笔记中的一个知识总结,大概122个Linux指令。如今,写出来就当再回顾一遍了。若有错误的内容,请朋友们指出。
pwd 显示当前位置的路径
参数:-P 显示真实路径,而非链接路径
mkdir 创建目录
参数:-m 设置目录权限。eg:mkdir -m 777 /apps
-p 设定层级目录。 eg:mkdir -p /apps/nginx
eg:mkdir -m 777 -p /tmp/test{1,2}
ls 列出文件或目录名称
参数:-a 列出全部文件 包括.开头的文件(隐藏文件)
-A 列出全部文件 不包括.与..两个目录
-d 仅列出目录
-f 直接列出结果 ,不排序
-F 列出全部文件,并显示附加信息,如 * / = |
-h 显示人类易读的文件容量
-l 长格式显示
-t 以时间排序
-r 反向输出
-i 显示inode
-Z 查看安全性文件(selinux需开启)
--time-style=long-iso 格式化时间
eg: ls -l --time-style=long-iso
eg: ls -lhi
8599744978 drwxr-xr-x 3 stephenzhang staff 96B 6 28 18:44 PycharmProjects
以上屏幕输出字段的解析:
第一列:inode 索引节点编号:是文件或目录所在磁盘中唯一标识,读取时先读取此索引节点。
第二列:
第1个字符:文件类型,-普通文件;d目录;l链接文件;c字符文件
第2-10字符:(rwxrwxrwx)文件权限
第11个字符:. selinux相关,当关闭selinux后,. 即消失。
第三列:文件硬链接数。相当于文件的另一个入口,同一个文件的对应的硬链接其对应相同的inode编号。
第四列:文件的属主(或用户)
第五列:文件所在的用户组(属组)
第六列:文件大小
第七列:文件改动日期/时间
第八列:文件名称或目录名称
du 统计文件或目录使用容量
参数:-a 所有文件与目录
-s 只显示总数
-h 显示人类易读的文档容量
cp 复制文件或目录
参数:-a 相当于-dr --preserve=all
-p 连同文件的属性(权限、用户、时间)一起复制。
-r 递归复制,层级目录复制,但不复制文件的权限。
-i 覆盖询问
-u 若复制的文件存在差异时才进行复制
rm 删除文件或目录
参数:-f 强制删除
-i 删除提示
-r 递归删除
chgrp 改变文件所属组
参数:-R 递归
eg:chgrp -R python /tmp/test
chown 改变文件或目录拥有者
参数:-R 递归
eg:chown -R python.python /tmp/test
chmod 改变文件权限 r:4 w:2 x:1
参数:-R 递归
u g o a: +加 -减 =设定 eg:u+r
eg:chmod u=rwx,go=rx /tmp/test/test.txt
eg:chmod a+r /tmp/test/test.txt
eg:chmod 644 /tmp/test/test.txt
setuid :针对程序或二进制文件(注意.sh文件无效) eg: -rwsr--r--
有s或S位时,普通用户具有该文件的属主权限并可通过属主权限创建进程。
eg:chmod 4644 file 或 chmod u+s file
setgid : 多用户共享目录的权限 chmod g+s /directory
useradd 创建用户
参数:-M 不建立家目录
-s shell
-g group
-G 补充group
-m 建立家目录
-D 查看预设值
-u 指定uid号
-e 过期时间
eg:useradd -g new1 -s /sbin/nologin -M mysql
useradd -D -e "" 取消过期时间默认设定
more 翻页查看文件
less 翻页查看文件
head 从文件头部查看
eg:head -10 test.txt
tail 从文件尾部查看
参数:-f 追踪文本变化并显示
eg:tail -10 test.txt
tail -f test.txt
umask 默认权限
参数:-S 显示ugo权限
lsattr 查询文件或目录隐藏属性
参数:-a:显示隐藏文件的属性
-d:仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的文件一并列出
chattr 设定文件或目录隐藏属性
参数:-i 禁止删除或更改等任何操作
-a 只能添加内容
which 查找指定指令信息
参数:-a 将所有path目录中找到的指令列出
eg:which ll
find 查找文件或目录
参数:-name 查找名字
-type 类型 f(文件) d(目录)
-mtime 修改的时间。find / -mtime +4 五天之前修改不包括第四天
find / -mtime 4 第四天修改
find / -mtime -4 四天内修改
-perm 权限
-size 文档大小 find / -size +1M 大于1M文档
eg: 条件匹配查找find . \( -name "*.sh" -o -name "*.txt" \) -print
匹配并执行cmd,find / -name '*.sh' -exec cat -n {} \;
cat 查看文件内容
参数:-n 显示行号
-A
df 查看磁盘或目录容量
参数:-h 以人类易读的方式显示
-T 显示文件系统名称
-i 显示inode
ln 链接
参数:-s 软链接或标记链接。 生成新的inode文件
不带s参数时,为硬链接。且硬链接产生的文件 inode 是一样的
lsblk 列出所有磁盘
参数:-f 列出文件系统名称
-m 列出设备权限
blkid 查存储设备UUID
mount 挂载
参数:-a 挂载stab中未挂载的设备
-l 显示Label列
-t 制定挂载类型,如xfs,ext3,ext4,iso9660,nfs
-o 参数,async,sync:同步写入或异步写入。默认为async
atime,noatime:更改访问时间
ro,rw:只读或读写
auto,noauto:允许自动挂载或不自动挂载
suid,nosuid:是否允许suid/sgid的档案格式
exec,noexec:是否可以执行二进制档案
user,nouser:一般用户是否可以mount
defaults:预设值为rw,suid,dev,exec,auto,nouser,async
remount:重新挂载
swapon 设置交换空间
参数:-s 查询所有交换空间
swapoff 取消交换空间
mkswap 格式化交换空间
parted 分区
参数:print 显示所有分区。例:parted /dev/sdb print
gpt 转换mbr到gpt
mbr 转换gpt到mbr
cpio 数据处理
参数:-ovcB 备份
例:cpio -ovcB> filename|device
-ivcdu 还原
例:cpio -ivcdu
-ivct 查看
例:cpio -ivct
-o 拷贝,将数据拷贝到档案或设备中
-B Blocks大小增加到5120bytes,默认为512bytes
-i 将数据从档案或设备中拷贝到系统中
-d 还原时,建立目录
-u 自动覆盖旧档案
-v 显示存储过程
vim 文本编辑(vim功能十分强大,以后单独写关于其的文章)
多行复制:ma y’a
显示行号: :set nu
替换: :%s#内容1#内容2#g
alias 设置别名
例:alias la=‘ls -al'
set 查看自定义变量
unset 取消自定义变量
env 查看环境变量
read 读取键盘输入
参数:-p 输入提示文本
declare 声明变量
参数:-a:将变量定义为阵列array类型
-i:将变量定义为整数类型
-x:将变量导出为环境变量
-r:将变量设置为readonly类型
eg:declare -i sum=100+200
ulimit 限制关系(修改文件描述符)
参数:-H:hard。严格限制
-S:soft。警告限制
-a:列出所有限制
-f:可建立的最大文件大小
-t:可以是用的最大CPU时间(单位s)
-u:单一用户可以使用的最大程序数量
echo 显示
参数:-e:解释“\”跳脱符 (\t tab;\b 退格;\n 回车)
-n: 不换行
例:echo -e “hello\n”
type 查询指令类型
参数:-t:类型。file:为外部指令;alias:表示别名;builtin:内建指令
cut 截取
参数:-d 分隔符 如’:'
-f 取第几字段
-c 取第几个字符 如 取第12-15的字符
eg:echo ${PATH}|cut -d ‘:’ -f 2
grep 内容过滤 善于取行
参数:-a 将二进制文档以test文档方式搜索
-c 计算找到的字符数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择
-o 只显示筛选的文字
-E 扩展模式
eg:egrep '(TOM|DAN)’ 或 grep -E ‘(a|b)'
sort 排序
参数:-f 忽略大小写的差异
-b 忽略前面的空白字符部分
-M 以月份来排序
-r 反向排序
-u 去重,相同数据 仅列一行
-t 分隔符
-n 指定按数字大小排序。默认是以ascll码排
eg:cat /etc/passwd|sort -t: -k3 -n
wc 统计行数
参数:-l 统计总行数
-w 仅列出使用多少不同的字符数
-m 列出使用字符的总数
uniq 将上下连续重复字符显示为一行
参数:-i 忽略大小写
-c 进行统计数量
例:last|cut -d ' ' -f 1|sort|uniq -c
统计单词数量:
egrep -o "[a-zA-Z]+" /tmp/test.1 |sort|uniq -c
awk 格式化输出
区域与记录
field域,区域,字段 (eg: $1,$2…$NF)。FS 为切割区域的标识符
record记录,默认一整行,并以换行符结束
参数:-F 分隔符,如”:”或“[ :]”
NR 逐行记录行号
NF 显示每行的段数(区域数量)
FS 字段分隔符,默认为空格
$NF 显示最后一个区域
RS 记录的分隔符,可以指定每个记录的结尾标志
特殊操作符号:
~ :用于对记录或字段的表达式进行匹配
!~:用于表达与~相反的意思
引用外部变量:"'"$i"'"
eg:awk '$1~/^root/{print $0}' file
gawk --posix '$1~/o{1,2}/{print $NF}' test.1
eg:awk -F '[ :]' '{print $2}' new
awk -F '[ :]' '{print NF}' new 显示每行的段数
awk -F '[ :]' '{print NR}' new 显示 行号
last -n 5|awk '{print $1 "\t lines:" NR "\t columns:" NF}'
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}
eg:统计文件空行总和
awk '/^$/{a=a+1}END{print a}' /etc/services
eg: 统计所有环境变量的目录中的三个字母指令的个数
find $(echo $PATH|tr ":" " ") -type f -name "???"|awk '{a+=1}END{print a}'
eg:for i in `seq $(wc -l host|awk '{print $1}')`;do ssh admin@$(awk 'NR=="'"$i"'"{print $1} ' host) /sbin/ifconfig;done
setfacl 设置文件或文件夹访问控制
参数:-m 修改文件或文件夹访问选项
-x 移除文件或文件夹访问选项
eg:setfacl -m u:lisa:r file
setfacl -m m::rx file
setfacl -x g:staff file
u:账号:权限
g:组名:权限
m:权限
getfacl 查看文件或文件夹访问控制级别
tr 取代或替换文本中的字符
参数:-d 删除文本中相应的字符
-s 取代重复的字符
eg:last | tr '[a-z]' '[A-Z]’ 将字母小写变为大写
cat /etc/passwd | tr -d ':'
join 将两个文本内容拼接到一起
参数:-t 分隔符,两个进行对比如果相同则连成一行
-i 忽略大小写
paste 将两个文本内容简单拼接 默认以tab间隔
参数:-d 分隔符
sed 文本中字符处理
参数:-i 编辑文本 eg:sed -i ’s/xx/**/g’ new 将new中xx替换为** ,可以把编辑的文件生成新的文件名,如: -i.bak
-n 取消默认输出 eg:sed -n '2,5p’ new 显示new中 2-5行内容
-r 采用正则表达式
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出。通常 p 會与参数sed -n 一起运作~
s :取代,可以直接進行取代的工作哩!通常這個 s 的动作可以搭配正则表示法
eg:替换文件里面内容,并生成新的文件
sed -ri.bak 's#\:# #g' /tmp/test.1
eg:后向引用
sed -nr 's#(.*) (.*)#ping \1#gp' hosts
kill 杀进程 (kill -signal PID)
-l 显示所有signal
-9 强制关闭,不推荐。原因是无法进行程序的善后,如,临时文件、socket链接
-15 正常请求关闭进程
-2 中断程序
信号量:
SignalDescriptionSignal number on Linux x86
SIGABRTProcess aborted6
SIGALRMSignal raised by alarm14
SIGBUSBus error: "access to undefined portion of memory object"7
SIGCHLDChild process terminated, stopped (or continued*)17
SIGCONTContinue if stopped18
SIGFPEFloating point exception: "erroneous arithmetic operation"8
SIGHUPHangup1
SIGILLIllegal instruction4
SIGINTInterrupt2
SIGKILLKill (terminate immediately)9
SIGPIPEWrite to pipe with no one reading13
SIGQUITQuit and dump core3
SIGSEGVSegmentation violation11
SIGSTOPStop executing temporarily19
SIGTERMTermination (request to terminate)15
SIGTSTPTerminal stop signal20
SIGTTINBackground process attempting to read from tty ("in")21
SIGTTOUBackground process attempting to write to tty ("out")22
SIGUSR1User-defined 110
SIGUSR2User-defined 212
SIGPOLLPollable event29
SIGPROFProfiling timer expired27
SIGSYSBad syscall31
SIGTRAPTrace/breakpoint trap5
SIGURGUrgent data available on socket23
SIGVTALRMSignal raised by timer counting virtual time: "virtual timer expired"26
SIGXCPUCPU time limit exceeded24
SIGXFSZFile size limit exceeded25
printf 格式化输出
参数:
关于格式方面的几个特殊格式:
\a 警告声音输出
\b 退格键(backspace)
\f 清楚屏幕 (form feed)
\n 输出新的一行
\r 亦即Enter按键
\t 水平的[tab]按键
\v 垂直的[tab]按键
\xNN NN 为两位数的数字,可以转换数字成为字符。
关于C语言内,常见的变量格式
%ns 那个n是数字, s 代表 string ,亦即多少个字元;
%ni 那个n是数字, i 代表 integer ,亦即多少整数位数;
%N.nf 那个n与N都是数字,f 代表floating (浮点),如果有小数位数,
假设我共要十位数,但小数点有两位,即为%10.2f
test 检查文件类型与匹配
参数:-n 字符串非零
-z 字符串为零
-b 文件存在且是块类型
-c 文件存在且为字符类型
-d 文件存在切位文件夹类型
-e 文件存在
-f 文件存在且是规范文件
-g 文件存在且设置有组ID
-r 文件存在且可读
-w 文件存在且为可写
-x 文件存在且为可执行
-s 文件存在且文件大于0
-S 文件存在且为socket类型
date 时间
参数:-d (或--date) 显示日期 如:date -d yesterday +%d ;date --date(1 day ago)+%Y%m%d
date +F -d “+2day” ;date +F %H:%M -d “+2min”
-s 设置时间 date -s 14:36:00;date -s 2012-08-02;date -s "2012-05-18 04:53:00"
+%F 年月日长格式
+%y-%m-%d 年月日短格式
+%H:%M:%S 时分秒
+%w 星期 0 - 6 (周日-周六)
eg:for n in `seq 30`;do date -s "2017/03/$n";touch access_www_`(date +%F)`.log;done
chage 密码失效是通过此命令来管理的。
参数:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
例:chage -d 0 用户登录时需要重新修改密码
sh 执行script
参数:-n 不执行script,仅查询语法的问题
-v 执行script前,先将script内容输出屏幕
-x 将使用到的script内容显示到屏幕上
usermod 修改用户属性
参数:
-c :说明,即 /etc/passwd 第五字段的说明。
-d :设置家目录,即修改 /etc/passwd 的第六字段。
-g :设置组,修改 /etc/passwd 的第四字段。
xfs_quota 配额
xfs_quota -x -c “指令” 挂载点
参数:-x:专家模式,后续才能加-c的指令参数
-c:后续加的就是指令
指令:
print:单纯的列出目前主机内的档案系统参数等参数
df:与原本的df一样的功能,可以加上-b -i -h等
report:列出目前的quota项目,有-ugr(user/group/project)及-bi等
state:说明目前支持quota的档案系统的资料,有没有启动等相关信息
limit :实际限制的项目,可以针对 user/group 来限制,限制的项目有
bsoft/bhard : block 的 soft/hard 限制值,可以加单位
isoft/ihard : inode 的 soft/hard 限制值
name : 就是用户/群组的名称
timer :用來设定 grace time 的项目,也是可以针对 user/group 以及 block/inode 设定
eg: xfs_quota -x -c "df -h" /home
xfs_quota -x -c "state"
xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home
mdadm 软RAID管理
参数:--create:为建立RAID的选项;
--auto=yes:决定建立后面接的软RAID设备,如 /dev/md0, /dev/md1
--chunk=Nk:决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是64K或 512K。
--raid-devices=N:使用几个分区(partition) 作为RAID的设备
--spare-devices=N:使用几个分区作为备用 (spare) 设备
--level=[015] :设定这组RAID的等级。支持很多,不过建议只要用 0, 1, 5 即可
--detail:后面所接的那个RAID设备的详细资讯
专用选项:
-l 级别
-n 设备个数
-a {yes|no} 自动为其创建设备文件
-c 指定数据块大小(chunk)
-x 指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替
-D 查看raid细节
eg:
创建raid0:
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
创建raid1:
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb{5,6}
lvm 逻辑卷管理器(XFS / EXT4)
PV/VG/LV
查询(scan)pvscanvgscanlvscanlsblk, blkid
创建(create)pvcreatevgcreatelvcreatemkfs.xfsmkfs.ext4
显示(display)pvdisplayvgdisplaylvdisplaydf, mount
增加(extend) vgextendlvextend (lvresize)xfs_growfsresize2fs
减少(reduce) vgreducelvreduce (lvresize) ,不支持resize2fs
刪除(remove)pvremovevgremovelvremoveumount, 重新格式化
调整尺寸大小(resize) lvresizexfs_growfsresize2fs
更改属性(attribute)pvchangevgchangelvchange/etc/fstab, remount
at 一次工作计划 (at [-mldv] TIME)
参数:-m:当at的工作完成后,即使没有输出信息,也email通知使用者该工作已完成
-l:at -l相当于atq,列出目前系统上面的所有该使用者的at计划
-d:at -d相当于atrm,可以取消一个在at计划中的工作
-v:可以使用较明显的时间格式列出at计划中的工作列表
-c:可以列出后面接的该项工作的实际指令内容
TIME:时间格式,这里可以定义“什么时候要进行at工作计划”的时间,格式有:HH:MM(例如:05:00)
或 04:00 2015-07-30
或 04pm July 30
或now + 5 minutes、04pm + 3 days
eg:
at now + 5 minutes <==单位要加 s !
at> /bin/mail -s "testing at job" root < /root/.bashrc
atq 查询有哪些工作计划
atrm 删除工作计划 如:atrm 3
cron 循环工作计划(crontab [-u username] [-l|-e|-r])
/var/spool/cron/$username <<配置文件
参数:-u:只有root才能进行这种计划,即帮助其他使用者建立或删除crontab工作计划
ex:crontab -u new -l ,crontab -u new -e
-e:编辑模式
-l:查询crontab中的计划
-r:移除所有的crontab的工作内容
eg:crontab -e
0 12 * * * mail -s "at 12:00" dmtsai < /home/dmtsai/.bashrc
ps 报告进程状态
查看每个进程(标准语法):ps -e ps -ef
查看每个进程(BSD语法):ps ax ps aux
USER:该process是那个用户创建的?
PID :process的id。
%CPU:process占用的CPU资源的百分比;
%MEM:process 占用的内存的百分比;
VSZ :process 占用的虚拟内存 (Kbytes)
RSS :process 占用的固定内存大小(Kbytes)
TTY :process 是运行在哪个虚拟终端。另外,tty1-tty6 是本机上面的登录,若为pts/0等,则表示通过网络连接主机
STAT:process 目前的状况
START:process 建立时间
TIME : process 实际运行时间
COMMAND:显示process 发起的实际指令
nice 新执行的指令即给新的nice值 (nice [-n 数字] command)
参数:-n:后面接一个整数,范围-20~19
eg:nice -n -5 vim
renice 已有的进程的nice重新调整 (renice [number] PID)
eg:renice -5 14836
jobs 后台进程状态
参数:-l:除了列出job number与指令之外,同时显示PID
-r:仅列出后台运行的工作
-s:仅列出后台中监听的工作
ctrl z 将前台工作扔到后台
fg 将后台工作扔到前台
eg: fg %1
bg 让工作在后台的状态变为运行中
eg: bg %2
nohup 离线进程管理
nohup “指令与参数” 在终端机前台中工作
nohup “指令与参数” & 在终端机后台中工作
top 动态进程状态
参数:-d :后面可以接秒,预设是 5 秒
-b :以批次的方式執行 top
通常会搭配数据流重定向将批次的結果输出成为档案。
-n :与-b 搭配,意义是,需要進行几次 top 的输出結果。
-p :指定某些个PID 来进行观察检测而已。
在 top执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用字元排序显示;
N :以 PID 来排序
T :由该 Process 使用的 CPU 时间积累(TIME+) 排序。
k :给予某个 PID 一个信号 (signal)
r :给予某个 PID 重新制订一个nice 值。
q :离开 top 软件的按键。
pstree 进程相关性查看
参数:
-p :显示每个 process 的 PID;
-u :显示每个 process 的所属用户名
free 查看内存使用情况
参数:-b :直接输入 free 时,显示的单位是 Kbytes,可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 来显示单位。也可以直接让系统自己指定单位 (-h)
-t :在输出的最终結果,显示实体内存与 swap 的总量。
-s :可以让系统每几秒输出一次
uptime 显示系统启动时间与工作负载(1,5,15分钟的平均负载)
netstat 跟踪网络或socket文件
参数:-a :将目前系统上所有的连接、监听、Socket 资料都列出来
-t :列出 tcp 网络封包的资料
-u :列出 udp 网络封包的资料
-n :不以程序的服务名称,以端口号 (port number) 来显示;
-l :列出目前正在网络监听 (listen) 的服务;
-p :列出该网络服务的程序 PID
Proto :网络的封包协议,主要分为 TCP 与 UDP 封包;
Recv-Q:非由使用者程式连接到此 socket 的复制的总 bytes 数;
Send-Q:非由远程主机传送过来的 acknowledged 总 bytes 数;
Local Address :本地端的 IP:port 情況
Foreign Address:远程主机的 IP:port 情況
State :链接状态,主要有建立(ESTABLISED)及监听(LISTEN);
dmesg 分析核心产生的信息
vmstat 检测系统资源变化
参数:-a :使用 inactive/active(是否活跃) 取代 buffer/cache 的内存输出信息;
-f :开机到目前为止,系统复制 (fork) 的程序数;
-s :将一些事件 (开机至目前为止) 导致的内存变化情況列表说明;
-S :后面可以接单位,让显示的信息有单位。例如 K/M 取代 bytes 的容量;
-d :列出磁盘的读写总量统计表
-p :后面列出分割槽,可显示该分割槽的读写总量统计表
程序栏(procs) 的項目分別为:
r :等待运作中的程序数量;b:不可被唤醒的程序数量。這两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多程序就无法被执行或一直在等待而无法被唤醒的原因)
内存栏 (memory) 项目分別为:
swpd:虚拟内存被使用的容量; free:未被使用的内存容量; buff:用于缓冲内存; cache:用于缓存。 这部份与free是相同的。
内存交行空间 (swap) 的项目分別为:
si:由磁盘中将程序取出的量; so:由于内存不足而将没用到的程序写入到磁盘的swap的空间。 如果 si/so 的数值太大,表示内存的数据常常得在磁盘与主内存之间传输
磁盘读写 (io) 的项目分別为:
bi:由磁盘读写 的区块数量; bo:写入到磁盘去的区块数量。如果這部份的值越高,代表系統的 I/O 非常忙碌
系统 (system) 的项目分別为:
in:每秒被终端的程序次数; cs:每秒进行的事件切换次数;這两个数值越大,代表系通与周边设备的沟通非常频繁,这些周边设备包括磁盘、网卡、时钟等。
CPU的项目分別为 :
us:非核心层的 CPU 使用状态; sy:核心层所使用的 CPU状态; id:限制的状态; wa:等待 I/O 所消耗的 CPU 状态;st:被虚拟机 (virtual machine) 所使用的CPU使用状态 (2.6.11 以后才支持)
lsof 列出被程序所开启的文档名,与fuser相反,是通过文件或设备的程序找到相应的档案或设备
参数:
-U :仅列出 Unix like 系统的 socket 档案类型
-u :后面接username,列出该使用者相关程序所开启的文件
+d :后面接目录,亦即找出某个目录底下已经被开启的文件
已知端口查服务:
例:lsof -i:80
pidof 找出某个正在执行的进程PID
参数:-s:仅列出一个PID而不是列出所有PID
-x:同时列出该程序名称可能的PPID那个程序的PID
例:pidof systemd
selinux 安全上下文
getsebool [-a] [规则的名称] 查询各个规则的布尔值
参数:-a:列出目前系统上的所有selinux规则的布尔值(on|off)
setsebool 修改selinux规则的布尔值
参数:-P:直接将设定值写入配置文档,该设定资料未来会生效
depmod 自动建立内核模块的依赖关系
参数:-A:不加参数时,depmod会主动分析当前内核模块,并重新写入/lib/modules/$(uname -r)/modules.dep当中。若加入-A参数,则depmod会去搜索比modules.dep内还新的模块,若找到新模块,才会更新。
-n:不写入modules.dep,而是将结果输出到屏幕。
-e:显示出当前已经加载的不可执行的模块名称。
例:#cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net
#depmod
lsmod 查询所有内核加载的模块
modinfo 模块名称或文件名
参数:-a:仅列出所有者名称
-d:仅列出该modules的说明
-l:仅列出授权(license)
-n:仅列出该模块的详细路径
insmod 加载内核模块
[/fullpath/module_name] [parameters]
例:insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko
lsmod |grep cifs
rmmod 删除内核模块
[-fw] module_name
参数:-f:强制将该模块删除,不论是否在使用
-w:若该模块正被使用,则rmmod会等待该模块使用完毕后,才移除。
modprobe [-lcfr] module_name 智能加载内核模块
参数:-c :列出目前系统所有的模块
-l:列出当前在/lib/modules/`uname -r`/kernel当中的所有模块完整的文件名
-f:强制加载该模块
-r:移除模块
dmidecode 查看硬件配置情况
参数:-t:类型type
1:详细系统信息,包括主板型号与硬件信息
4:cpu相关信息
9:系统相关插槽信息,pci、pci-e
17:每个内存插槽信息与内存信息
lspci 查看PCI设备信息
参数:-v:显示更多的PCI设备的信息
-vv:更详细的信息
-n:直接观察PCI的ID,没有厂商名称
iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数] 查看CPU与周边设备I/O状态
参数:-c:仅显示CPU状态
-d:仅显示存储设备状态
-k:预设显示为block
-m:显示以MB单位的结果
-t:显示日期
#tps :平均每秒的传输次数!
#kB_read/s :开机到现在平均读取的单位;
#kB_wrtn/s :开机到现在平均写入的单位;
#kB_read :开机到现在,总共读出来的单位;
#kB_wrtn :开机到现在,总共写入的单位;
dd 转换与复制文件
例:dd if=/dev/sda of=/dev/sdb 将sda复制到sdb
cpio 文件复制与归档
例:find / -print|cpio -covB > /dev/st0 备份到磁带
cpio -iduv < /dev/st0 从磁带还原
xfsdump 备份
例:xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home 将/home中的数据 完整备份到/backupdata/home.dump中
xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home 将/home中的数据进行一次增量备份到/backupdata/home.dump1中
rsync 远程文件复制
参数:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息
本地: rsync [OPTION...] SRC... [DEST]
例:rsync -av /home /backupdata/
远程
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
例:1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
file 查看文件类型
gcc 编译
参数:-c 产生object对象文件,不加参数生成*.out二进制文件。
-O 产生最佳化参数
-Wall 产生编译细节信息
-o 将所有对象文件(*.o)连接输出一个编译文件
-l 加入某个函数库
-m libm.so 函数库连接
-L 后面接函数库路径
-I 后面接include文档路径
例: gcc -O -c thanks.c thanks_2.c
gcc -o thanks thanks.o thanks_2.o
gcc sin.c -lm -L/lib -L/lib64
gcc sin.c -lm -I/usr/include
ldconfig 把动态函数库加载到内存中缓存起来
参数:-p 显示所有已加载的动态函数库
例:#vim /etc/ld.so.conf
/usr/lib64/mysql <==添加新的库
#ldconfig
#ldconfig -p
ldd 解析程序的动态函数库
参数:-v 列出所有内容信息
-d 重新将信息中有丢失的link点列出来
-r 将ELF有关的错误列出来
例:ldd /usr/bin/passwd
md5sum 验证软件的正确性
参数:-b 使用二进制的读取方式,预设为windows/dos档案形态的读取方式
-c 检验档案指纹
-t 以文字形式来读取档案指纹
例:md5sum ntp-**.tar.gz
例:#ls /etc/{passwd,shadow,group} > important.file
#find /usr/sbin /usr/bin -perm /6000 >> important.file
#vim md5.checkfile.sh
#!/bin/bash
for filename in $(cat important.file)
do
md5sum $filename >> finger1.file
done
#sh md5.checkfile.sh
#chattr +i finger1.file
rpm 软件包管理器
参数:-i install
-v 查看更多安装细节
-h 显示安装进度
-e 删除
--nodeps 忽略软件的依赖性强行安装
--replacefiles 覆盖原来的已安装的软件
--force 覆盖安装
--prefix 指定新的安装路径
--noscripts 不想让软件在安装过程中自动执行某些系统指令
-Uvh 更新软件
-Fvh 修复与升级
-q 查询
-qa 列出所有已安装的软件
-qi 列出该软件的详细信息
-ql 列出该软件所有的档案与目录所在的完成文档名
-qc 列出该软件的所有参数档案名称(/etc/下的)
-qd 列出该软件所有说明档案
-V 验证该软件是否被更改过,如果有被列出
--rebuilddb 重建信息库(由于删除、安装更新时产生/var/lib/rpm/内的文件破坏)
provides 列出该指令所有的软件
yum 安装管理
选项 -y 自动跳过yes确认
参数:install 安装
remove 删除
list 列出当前yum所管理的软件名称
search 搜索某个软件名称或描述
info 列出yum所有软件名称
update 软件升级
repolist all 目前使用的软件库
clean all 将所有软件库信息删除
makecache 创建软件库信息
grouplist 列出所有可用的软件组
groupinstall 安装软件组
groupremove 删除软件组
iptables 防火墙
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -L 列出所有规则
iptables -D 删除一条规则
rpmbuild 对srpm进行编译与打包或安装(*.src.rpm)
参数:--rebuild 对srpm包进行编译与打包,最后产生rpm包
--recompile 直接编译、打包、并安装
--showrc 查看默认配置
编译后的rpm软件包会被防止到/root/rpmbuild/RPMS/中
根据spec文件产生rpm、srpm包
例:
rpmbuild -ba ntp.spec <==编译并同时产生rpm与srpm包
rpmbuild -bb ntp.spec <==仅编译成rpm包
#yum install rpmdevtools
#rpmdev-setuptree 建立rpmbuild目录
#rpmdev-newspec
diff 比较两个文件或目录里文件的区别
参数:
-a或--text diff预设只会逐行比较文本文件。
-b或--ignore-space-change 不检查空格字符的不同。
-B或--ignore-blank-lines 不检查空白行。
-c 显示全部内文,并标出不同之处。
-C或--context 与执行"-c-"指令相同。
-d或--minimal 使用不同的演算法,以较小的单位来做比较。
-D或ifdef 此参数的输出格式可用于前置处理器巨集。
-e或--ed 此参数的输出格式可用于ed的script文件。
-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或--speed-large-files 比较大文件时,可加快速度。
-l或--ignore-matching-lines 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或--ignore-case 不检查大小写的不同。
-l或--paginate 将结果交由pr程序来分页。
-n或--rcs 将比较结果以RCS的格式来显示。
-N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或--brief 仅显示有无差异,不显示详细的信息。
-r或--recursive 比较子目录中的文件。
-s或--report-identical-files 若没有发现任何差异,仍然显示信息。
-S或--starting-file 在比较目录时,从指定的文件开始比较。
-t或--expand-tabs 在输出时,将tab字符展开。
-T或--initial-tab 在每行前面加上tab字符以便对齐。
-u,-U或--unified= 以合并的方式来显示文件内容的不同。
-v或--version 显示版本信息。
-w或--ignore-all-space 忽略全部的空格字符。
-W或--width 在使用-y参数时,指定栏宽。
-x或--exclude 不比较选项中所指定的文件或目录。
-X或--exclude-from 您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。
-y或--side-by-side 以并列的方式显示文件的异同之处。
--help 显示帮助。
--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
--suppress-common-lines 在使用-y参数时,仅显示不同之处。
例:diff -uNr nginx1/ nginx2/ >nginx.patch <==生成补丁
wget 网络工具
参数 -O 指定路径与名称
例:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
tree 列出树状结构
参数 -L 显示层级
-d 显示目录
例:tree -Ld 1 /
tar 归档
参数:
-c:创建 create
-v:显示 verbose
-z:压缩 gunzip gz格式
-f:文件
-x:解压
-C:指定位置解压
-t: list 列出
--exclude :排除 --exclude=file
-X:排除列表文件 ex: tar -zcvfX file.tar.gz file /tmp/*
-j:压缩 bz格式
seq 显示序列数
参数:
-s :间隔符号
-w :显示0
eg:
seq 100
seq 1 2 100
seq -s ';' 100
dumpe2fs 查看文件系统信息 支持ext2、ext3、ext4文件系统
exg:dumpe2fs /dev/sda1|grep -i "Inode size"
stat 查看文件或文件夹的状态信息
Access: 访问时间,find -atime
Modify: 修改时间,内容发生变化 find -mtime
Change: 变化时间,包含Modify,权限、属主、用户组 find -ctime
w 查看谁登录,做了什么
lastlog 查看所有创建用户登录信息
/var/log/lastlog
su 切换用户
- 切换用户环境变量
-c 后面接 ‘命令’ 。以某用户身份执行命令
ex:su - new -c ‘/tmp/new.sh’
su - new -c “pwd”
/var/db/sudo/ 存放用户时间戳信息
sudo 其他用户执行
-l 查询该用户下权限信息
-c 检查sudoer语法问题
vi /etc/sudoers == visudo
dig DNS解析指令
dig @114.114.114.114 www.baidu.com +trace 以114.114.114.114 来跟踪解析www.baidu.com过程
ip ip地址设置
查看ip信息:ip addr
添加辅助ip地址(虚拟ip):ip addr add 192.168.0.12/24 dev eth1:1 up
partprobe 通知内核分区表变化
做完分区后(例如用fdisk工具),需要告诉内核你做的分区调整,不然需要重启系统。
ex: partprobe /dev/sdb
tcpdump 抓包
tcpdump -n icmp -i eth0
eg:针对22端口抓3个包
tcpdump port 22 -Stn -c 3
cp 拷贝
eg: 备份文件 cp /data/file{,.bak}
expr 表达式求值
scp 安全远程拷贝
参数 -P 端口号
-r 递归目录(可以拷贝目录)
-p 保持属性
-l 限速
eg: scp -P 22 -rp /tmp root@$IP:/tmp