linux运维必备178个命令

linux运维必备178个命令
●线上查询及帮助命令(2 个) ●文件和目录操做命令(13 个)
●查看文件及内容处理命令(22 个) ●文件压缩及解压缩命令(4 个)
●信息显示命令(12 个) ●搜索文件命令(4 个)
●用户管理命令(9 个) ●基础网络操做命令(11 个)
●深刻网络操做命令(5 个) ●有关磁盘文件系统的命令(8 个)
●关机和查看系统信息的命令(3 个) ●系统安全相关命令(10 个)
●查看系统用户登录信息的命令(6 个) ●查看硬件信息相关命令(8 个)
●系统性能监视高级命令(10 个) ●进程管理:(16 个)
●很是危险的系统命令(5 个) ●linux 系统3位剑客(3 个)
●其它(16 个) html

线上查询及帮助命令(2 个)
man help
文件和目录操做命令(13 个)
ls stat tree pwd mkdir rmdir cd touch cp mv rm ln find rename
ls list(列表) 列表目录文件 ls -lhi
例子:ls / 列根/目录下目录和文件; ls a.doc 列举文件a.doc的全部信息
-l(long)长格式列举细节,-d(directorys)查看目录 -h 人类可读 -a 所有包括隐藏文件 -f 列举文件类型 -R 递归列举 -F 给目录最后加斜线
-i inode节点号 例如:ls –lhi 查看inode节点数量: df –i
1节点号 2属性权限 3硬连接数 4所属者 5所属组 6大小 79修改时间 10名
inode小结 磁盘被分区并格式化为ext4文件系统后会产生必定数量的inode和block
索引节点的做用是存放文件的属性信息以及做为指针指向文件block位置
Ext3ext4 文件系统 block 才是存放文件实体的位置
Inode是磁盘上的一块存储空间,默认大小256字节
Inode为一串数字,在系统里每一个文件inode号是惟一的
inode相同的文件是互为硬连接文件,能够认为是一个文件
block的大小通常有1k,2k,4k几种,其中引导分区为1k
若是一个文件很大,可能占有多个block,若是很小,至少占1个
mkfs.ext4 –b 2048 -I 256 /dev/sdb
-p 给不一样类型文件加标识
stat 查看单个文件属性 例如: stat /etc/passwd
tree 显示目录树 (须要yum安而且设置LANG=en) 不加参数为显示当前目录下全部目录 通常用法:tree -difL 2
-a显示全部包括隐藏
-d只显示目录
-L 2只显示目录的2层
-f显示完整的目录结构
-i不显示前面的横杠
-F普通文件不显示/
pwd print work directory 打印当前工做目录
mkdir make directorys 建立目录 例子:mkdir /data 在根/下建立data目录 -p能够递归建立 例如 mkdir a/b/c/d/e
cd change directory 改变目录路径例子: cd /etc cd - 上一次目录 cd .. 上一级目录
touch 建立文件或更新文件时间戳atime等时间信
cp copy -r 递归; -a 至关于-pdr; -p 连同属性一块儿复制过去,但上下文会继承目标目录的上下文,而非默认属性
配合大括号使用 {} bash A{B,C}  bash AB AC
同一路径下:cp /etc/ssh/sshd_conf{,.bak} 不一样路径下: cp /etc/{ssh/sshd_conf,tmp/}
In 硬链接 例子: In -s 源文件 目标文件 软链接是不要s属性(symbolic的意思)
rm remove -f(force)强制,-r(recursive)递归,用于删除目录
mv move 移动文件或者目录 例子 mv find /date -type f -name "*.txt" /tmp/ 与find联用
find 查找格式为 find 【在哪里查的绝对路径】 -type -f文件 -d目录 -c字符 -b块 -s通讯文件 -name 【文件名】 -size [【大小+1M,1M,-1M】 -mtime 【修改时间:+7,7,-7】天(modify/change/access三种)!感叹号为取反 -exec 执行什么动做 【动做: mv {} /tmp】 \; -prune –print 当输出文件夹时只输出顶目录:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找时如何区分文件和目录?node

  1. 根据颜色区分,深蓝色为目录,白色为文件
  2. ls –l 输出结果中以d开头的绝对是目录
  3. ls –F或-p(先后加斜杠)经过给目录加标识,而后经过过滤标识就是目录
  4. 上面的find 查找类型为 d的。 linux

    例如:find /tmp/oldboy -type f ! -name passwd | xargs rm -f 删除/tmp/oldboy下全部文件除了passwd
    find /var/log -type f -name “.log” -size +1M -mtime +7 -exec mv {} /tmp \; 查找/var/log下全部7天之前以log结尾的大于1M的文件移动到/tmp下
    rename 更名 例如:rename aa abc baa 将baa文件中的aa 替换为 abc 即babc
    结合正则表达式作:
    -n 直接在终端打印结果,而非实际执行,肯定无误后再去掉-n
    -v 打印被修改为功的文件
    -f 若重名,覆盖已经存在的文件,慎用!
    例如:将全部
    .nc文件中的Sam32替换成Stm32:
    rename -v ‘s/ Sam32/ Stm32’ *.nc
    查看文件及内容处理命令(22 个)
    cat tac rev more less head tail cut split paste sort uniq wc iconv dos2unix file diff vimdiff chattr lsattr
    cat 查看文件内容
    tac 行反序查看文件内容,与cat相反 能够与其余命令连用
    例如:tail -3 /etc/passwd | tac 反行向显示该文件最后三行
    rev 行不变,每行字符串反向输出
    more 分页显示文件内容,格式为:more file_name 能够与其余命令连用
    例如: cat /etc/passwd | more
    能够经过参数-数字 来限制每页显示的行数 例如: more -12 /var/log/syslog
    -c 为清除当前内容,直接显示下一页内容
    +/strig用来搜索例如:more +/abc /var/log/syslog 在该文件中搜索“abc”
    摁空格显示下一页,摁b显示上一页
    less 与more差很少,可是最后不会退出,也不会加载文件只是显示
    head 读取文件的前n行 例如: head -n 3 /etc/passwd
    打印文件aaa 2-5行 : head -5 aaa | tail -4
    tail 读取文件末尾的后n行
    cut 针对行进行竖向切割,
    例如: cut -b -9 abc 显示abc文件每行的前9个字符
    cut –b 9- abc 显示abc文件每行的第9字符之后的
    cut –d: -f1,3-5 显示以冒号分割的第1 3至5 列
    split 针对日志文件分割,例如:split -b 500k date.file -d -a 3 part
    若是想用数字后缀使用-d不然字母,-a length指定后缀长度,最后参数为前缀名
    paste 粘贴的含义,将两个行数相同的文件,其内容放在相同行。-s 按列对应放
    例如:paste file1 file2 paste -s file1 file2
    sort 排序,按行从首字母向后依次比较ASCⅡ码值,升序输出到屏幕
    -n是按照数字大小排序,-r是以相反顺序,
    -k是指定须要爱排序的栏位,-t指定栏位分隔符为冒号
    sort -nrk 3 -t: abc 将以:分隔的 第三列按行排序 输出
    uniq 忽略重复行,通常与sort连用 例子 sort file.txt | uniq -c 而且显示重复行的次数
    wc 统计文件 -l行数 -w单词数 -c字节数 文件名 通常连用例如:
    统计当前文件夹下有多少个文件 ls -l | wc –l
    统计/etc/passwd中使用shell:/sbin/nologin的使用人数:
    cat /etc/passwd | awk -F: '/sbin\/nologin$/' | wc -l
    iconv 字符转码
    dos2unix 将dos文件转换成unix文件格式
    file 显示文件类型
    diff 比较文件的不一样参数较多不一一列举
    vimdiff Vim模式比较文件,且可编辑 vim file1 file2
    chattr 用来改变文件目录的更底层属性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
    lsattr 用来查看文件目录的更底层属性 例如:lsattr /etc/resolv.conf
    egrep
    文件压缩及解压缩命令(4 个)
    tar unzip gzip zip
    tar: 打包压缩
    -c 归档文件
    -x 解压缩文件
    -z gzip压缩文件
    -j bzip2压缩文件
    -v 显示压缩或解压缩过程 v(view)
    -f 使用档名
    例:tar -cvf /home/abc.tar /home/abc 只打包,不压缩
    tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
    tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
    固然,若是想解压,就直接替换上面的命令
    tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就能够了。
    zip 压缩文件 例如 zip -q -r html.zip
    unzip 解压ZIP格式压缩包 例如 unzip html.zip
    gzip 压缩文件,例如 gzip -r log.tar 会将文件log.tar压缩成log.tar.gz文件
    -dz 解压,例如 gzip -dz log.tar.gz
    -r 为对目录操做 例如: gzip -rv dir5 全部dir5下的文件变成.gz 文件夹存在ios

信息显示命令(12 个)
uname hostname dmesg uptime file stat du df top free date cal
uname 显示系统信息
uname -a 显示内核、当前时间
hostname 显示主机名
dmesg 显示linux内核的环形缓冲区中的全部驱动
| grep sda 列出全部被内核检测到的硬盘设备
| grep usb (dma tty memory) 等等信息
uptime 输出结果:16:26:11 up 7:50, 2 users, load average: 0.66, 0.53, 0.27
打印系统当前时间 up开启多久 用户链接数 系统平均负载,统计1,5,15分钟的
系统平均负债,即特定时间内运行队列中的平均进程数,应该小于3
file 显示文件类型
stat 显示指定文件的详细信息,比ls更详细
du -sh [文件] 显示文件的大小s仅显示统计 h以KMG大小单位输出
df 查看磁盘挂载状况 例如: df -h
fdisk 查看物理磁盘
top 动态查看系统进程
free 查看内存与swap分区
date 打印时间 ; -s 20171111指定一个时间正则表达式

cal 打印日历,-j 显示一年的第几天;-3 显示含左右3个月的日历
搜索文件命令(4 个)
which find whereis locate type
Which 查找并显示给定命令的绝对路径 例子:which pwd 结果为/bin/pwd
find 查找格式为 find 【在哪里查的绝对路径】 -type -f文件 -d目录 -c字符 -b块 -s通讯文件 -name 【文件名】 -mtime 【修改时间:+7,7,-7】(modify/change/access三种)!感叹号为取反 -exec 执行什么动做 【动做: mv {} /tmp】 \;
-prune –print 当输出文件夹时只输出顶目录:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找时如何区分文件和目录?shell

  1. 根据颜色区分,深蓝色为目录,白色为文件
  2. ls –l 输出结果中以d开头的绝对是目录
  3. ls –F或-p(先后加斜杠)经过给目录加标识,而后经过过滤标识就是目录
  4. 上面的find 查找类型为 d的。
    whereis 查找-b二进制文件,-m manual路径下的说明文件,-s 源代码文件
    locate 配合数据库查看文件位置,速度快
    type 显示指定命令的类型,判断给出的指令是内部指令仍是外部,也能够看内部路径
    用户管理命令(9个)
    useradd usermod userdel groupadd passwd chage id su sudo
    useradd 添加用户 语法:useradd 用户名 -s 指定登陆方式 -g 指定组 -G 指定从属组
    usermod 用户信息修改 例如:usermod -G staff newuser2 将用户添加到staff组中
    -G 改从属组 -g 改组 -u 改ID -l 改用户名 -L锁定帐号 -U解锁帐号
    userdel 删除用户,若不加选项,则仅删除用户账号,而不删除相关文件。
    例子: userdel linuxde //删除用户linuxde,但不删除其家目录及文件;
    userdel -r linuxde //删除用户linuxde,其家目录及文件一并删除;
    groupadd 建立一个新组 例子: groupadd -g 1099 aaa 建立一个ID为1099名叫aaa组
    passwd 设置密码与过时时间,通常只有root用户可用,普通用户只能改本身密码
    -d:删除密码,仅有系统管理者才能使用 passwd -d donny
    -f:强制执行 passwd -fd donny
    -k:设置只有在密码过时失效后,方能更
    -l:锁住用户不能更改密码 passwd -l donny
    -u:解开已上锁的账号 passwd -u donny
    -s:列出密码的相关信息,仅有系统管理者才能使用
    改密码另以命令:echo “123456” | passwd –-stdin 用户名
    chage 修改帐号密码有效期
    -m:密码可更改的最小天数。为零时表明任什么时候候均可以更改密码。
    -M:密码保持有效的最大天数。 chage -M 90 donny
    -w:用户密码到期前,提早收到警告信息的天数。 chage -w 10 donny
    -E:账号到期的日期。过了这天,此账号将不可用。 chage -E 15 donny
    -d:上一次更改的日期。
    -i:停滞时期。若是一个密码已过时这些天,那么此账号将不可用。
    -l:例出当前的设置。由非特权用户来肯定他们的密码或账号什么时候过时。
    id 显示用户ID和组ID 不带选项打印活跃用户的信息 例子: id donny
    -a 打印当前用户用户名、UID 和该用户所属的全部组
    -g或--group   显示用户所属群组的ID。
    -G或--groups 显示用户所属附加群组的ID。
    -n或--name   显示用户,所属群组或附加群组的名称。
    -r或--real   显示实际ID。
    -u或--user   显示用户ID。
    su su user 切换用户,加载配置文件.bashrc
    su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
    sudu 以他人的身份来执行命令,在/etc/sudoers 中设置foobar ALL=(ALL) ALL
    第一个ALL是指网络中的主机,咱们后面把它改为了主机名,它指明foobar能够在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL固然就是指命令名了。例如,咱们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:foobar linux=(jimmy,rene) /bin/kill
    基础网络操做命令(11 个)
    telnet ssh scp wget ping route ifconfig ifup ifdown netstat ip
    telnet 远程登录,23号端口,xinetd服务 例子:telnet 192.168.120.121 须要输入用户名密码
    ssh 远程登录, 22号端口,sshd服务 例子: ssh donny@192.168.120.121 –p 22
    scp 远程安全拷贝,基于ssh,把当前一个文件cp到远程另一台主机上,
    例如: scp /home/donny/abc.tar.gz root@192.168.120.121:/home/root
    若是想反过来操做,把文件从远程主机copy到当前系统,也很简单:
    scp root@/abc.tar.gz 192.168.120.121:/home/root/abc.tar.gz /home/donny/abc.tar.gz
    wget 用来从指定的URL下载文件,例:wget http://www.linuxde.net/testfile.zip
    wget ftp-url 匿名下载ftp服务器文件,下面为带用户名密码下载
    wget --ftp-user=USERNAME --ftp-password=PASSWORD url
    ping 使用ICMP传输协议,发出要求回应的信息,测试联通性。
    ping 192.168.1.1 或者 ping www.server.com
    route 设置静态路由,重启网卡或机器后会失效,永久有效改配置文件/etc/rc.local
    route 不加参数为显示当前路由(其中flags为节点状态,U开启、G网关、D动态性地写入、M由路由导向器动态修改的、!关闭)
    route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0 增长一条默认路由
    route add -net 192.168.0.0 netmask 255.255.255.0 reject 屏蔽此路由
    route del -net 192.168.0.0 netmask 255.255.255.0 reject 取消屏蔽
    route add fefault gw 192.168.120.240 添加一个默认网关(重启失效)
    route del fefault gw 192.168.120.240 删除一个默认网关
    ifconfig 显示激活的网络设备信息,可配置可是重启不保存不建议
    ifup 激活指定的网络接口: ifup eth0
    ifdown 禁用指定的网络接口: ifdown eth0
    netstat 打印网络系统的状态信息
    查看p pid号l 监听的端口a端口 n用IP显示 t TCP传输的链接 r 路由flags
    netstat -plantr
    查看链接某服务端口最多的IP地址:netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
    ip 版本6中配置ip命令
    删除网卡配置 ip a f dev eth0
    添加网卡配置 ip a add 192.168.1.1/24 dev eth0
    深刻网络操做命令(5 个)
    lsof mail nslookup dig
    lsof lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,由于lsof命令须要访问核心内存和各类文件,因此须要root用户执行。
    查看哪个程序正在占用80端口 lsof –i tcp:80
    mail 邮件发送和接受命令 mail -s “hello” donny@linuxde.net
    使用管道进行邮件发送 echo “hello” | mail -s donny@linuxde.net
    nslookup 查询DNS解析是否成功
    dig 查看域名系统是否工做正常:dig www.baidu.com
    查看某个域名的整个解析过程:#dig @8.8.8.8 www.baidu.com +trace
    有关磁盘文件系统的命令(8 个)
    mount umount df du fsck dd dumpe2fs dump
    mount 挂载
    umount 取消挂载
    df 显示文件挂载 例如: df -h
    du 测量大小 例如: du -sh aaa
    fsck 修复文件系统中的错误 分区有问题 : fsck -y /etc/sdb2
    dd dd if=/dev/zero of=abc bs=1M count=100
    du -sh abc 能够看到生成了 100M的一个文件
    /dev/zero是一个字符设备,会不断返回0值字节
    dumpe2fs 命令用于打印“ext2/ext3”文件系统的超级块和快组信息。直接使用
    dumpe2fs /dev/sda3 | egrep –i “block count | Inode count”
    ------查看inode节点 和 block块 数量
    dump 备份ext2和3文件系统,
    例如将/home目录备份到/tmp/home.bak,层级0,并记录在/etc/dumpdates
    dump -0u -f /tmp/home.bak /home
    关机和查看系统信息的命令(3 个)
    shutdown halt init
    shutdown 关机 :shutdown +5 “提示信息”
    halt 关机
    init 查看系统进程命令:ps -ef | head
    查看init的配置文件:more /etc/inittab
    查看系统当前运行的级别:runlevel
    查看当前操做系统: cat /etc/redhat-release
    系统安全相关命令(10 个)
    chmod chown chgrp chage passwd su sudo umask chattr lsattr
    chmod chmod u+x,g+w f01 //为文件f01设置本身能够执行,组员能够写入的权限
    chmod u=rwx,g=rw,o=r f01
    chmod 764 f01
    chmod a+x f01  //对文件f01的u,g,o都设置可执行属性
    还有粘滞位概念:
    chmod u+s [命令] 以此命令所属者名义执行
    chmod g+s [命令]或[文件夹] 在此文件夹下或用此命令,建立的文件都继承其组
    chmod o+t [文件]或[文件夹] 除了root和拥有着,其余人都没法删除该文件/夹
    chown chown user:market f01  //把文件f01给uesr,添加到market组
    chgrp chgrp -R mengxin /usr/meng
    chage 修改密码过时时间
    -m:密码可更改的最小天数。为零时表明任什么时候候均可以更改密码。
    -M:密码保持有效的最大天数。
    -w:用户密码到期前,提早收到警告信息的天数。
    -E:账号到期的日期。过了这天,此账号将不可用。
    -d:上一次更改的日期。
    -i:停滞时期。若是一个密码已过时这些天,那么此账号将不可用。
    -l:例出当前的设置。由非特权用户来肯定他们的密码或账号什么时候过时。
    chage -M 60 donny
    passwd 设置密码与过时时间,通常只有root用户可用,普通用户只能改本身密码
    -d:删除密码,仅有系统管理者才能使用 passwd -d donny
    -f:强制执行 passwd -fd donny
    -k:设置只有在密码过时失效后,方能更
    -l:锁住用户不能更改密码 passwd -l donny
    -u:解开已上锁的账号 passwd -u donny
    -s:列出密码的相关信息,仅有系统管理者才能使用
    改密码另以命令:echo “123456” | passwd –-stdin 用户名
    su su user 切换用户,加载配置文件.bashrc
    su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
    sudu 以他人的身份来执行命令,在/etc/sudoers 中设置foobar ALL=(ALL) ALL
    第一个ALL是指网络中的主机,咱们后面把它改为了主机名,它指明foobar能够在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL固然就是指命令名了。例如,咱们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:foobar linux=(jimmy,rene) /bin/kill
    umask 文件权限掩码,取消什么权限
    chattr 用来改变文件目录的更底层属性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
    lsattr 用来查看文件目录的更底层属性 例如:lsattr /etc/resolv.conf
    查看系统用户登录信息的命令(6 个)
    whoami who w last lastlog users
    whoami 打印当前用户名
    who 看有哪些用户登录
    w 看有哪些用户登录 比who详细
    last 用于显示用户最近登陆信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单所有显示出来。
    lastlog 用于显示系统中全部用户最近一次登陆信息。
    lastlog文件在每次有用户登陆时被查询。可使用lastlog命令检查某特定用户上次登陆的时间,并格式化输出上次登陆日志/var/log/lastlog的内容。它根据UID排序显示登陆名、端口号(tty)和上次登陆时间。若是一个用户从未登陆过,lastlog显示Never logged。注意须要以root身份运行该命令。
    users 看有哪些用户登录 只显示用户名和登录会话
    查看硬件信息相关命令(8 个)
    ifconfig free fdisk ethtool mii-tool dmidecode dmesg lspci
    ifconfig 显示激活的网络设备信息,可配置可是重启不保存不建议
    free 查看内存与swap分区
    fdisk 用于观察硬盘实体使用状况,fdisk -l
    也可对硬盘分区 fdisk /dev/sdb
    m帮助;p查看当前分区状况;d删除分区;n添加分区;w保存
    建立分区时,扩展分区须要再建立成逻辑分区才可以使用
    ethtool 用于获取以太网卡的配置信息,或者修改这些配置 ethtool eth0
    mii-tool 用于查看、管理介质的网络接口的状态 mii-tool -v eth0
    dmidecode 获取有关硬件方面的信息
    查看服务器型号:dmidecode | grep 'Product Name'
    查看主板的序列号:dmidecode |grep 'Serial Number'
    查看系统序列号:dmidecode -s system-serial-number
    查看内存信息:dmidecode -t memory
    查看OEM信息:dmidecode -t 11
    dmesg 检查和控制内核的环形缓冲区/var/log/dmesg中的信息
    系统性能监视高级命令(10 个)
    内存:top vmstat mpstat iostat sar ipcs ipcrm lsof strace:跟踪一个进程的系统调用 ltrace:跟踪进程调用库函数的情
    top 动态查看系统进程
    vmstat 显示虚拟内存状态 例如:vmstat 3 5 间隔3秒报告5次
    mpstat 显示各个可用CPU的状态/proc/stat文件中
    iostat 监视系统输入输出设备和CPU的使用状况 iostat -x /dev/sda1
    标示 说明
    Device 监测设备名称
    rrqm/s 每秒须要读取需求的数量
    wrqm/s 每秒须要写入需求的数量
    r/s 每秒实际读取需求的数量
    w/s
    每秒实际写入需求的数量
    rsec/s 每秒读取区段的数量
    wsec/s 每秒写入区段的数量
    rkB/s 每秒实际读取的大小,单位为KB
    wkB/s 每秒实际写入的大小,单位为KB
    avgrq-sz 需求的平均大小区段
    avgqu-sz 需求的平均队列长度
    await 等待I/O平均的时间(milliseconds)
    svctm I/O需求完成的平均时间
    %util 被I/O需求消耗的CPU百分比

sar 系统运行状态统计工具,能够连续对系统取样,得到大量的取样数据,消耗的系统资源很小
-A:显示全部的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程建立活动;
-d:显示每一个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每一个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其余内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
sar -o temp 60 10 观察系统部件10分钟,并对数据进行排序
ipcs 进程间通讯设施的状态 例如: ipcs -apm
ipcrm 删除一个或更多的消息队列、信号量集或者共享内存标识 先用ipcs -a 看 再用ipcrm -m ID号
lsof 查看你进程开打的文件
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(四、六、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
strace 诊断、调试、统计与一体的工具,后续再研究!
进程管理:(16 个)
bg:后台运行 fg:挂起程序 jobs:显示后台程序 kill,killall,pkill:杀掉进程 crontab:设置定时 ps:查看进程 pstree:显示进程状态树 top:显示进程 nice:改变优先权 nohup:用户退出系统以后继续工做 pgrep:查找匹配条件的进程
bg bg命令与在指令后面添加符号"&"的效果是同样的:bg 1 任务号
fg 将后台任务转换到前台执行
jobs 显示后台程序 -l:显示进程号; -p:仅任务对应的显示进程号; -n:显示任务状态的变化; -r:仅输出运行状态(running)的任务; -s:仅输出中止状态(stoped)的任务。
kill 删除执行中的程序或工做,先用ps查找进程,而后用kill杀掉:ps -ef | grep vim ; kill 5591
killall 使用进程的名称来杀死进程,使用此指令能够杀死一组同名进程。咱们可使用kill命令杀死指定进程PID的进程,若是要找到咱们须要杀死的进程,咱们还须要在以前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令
-u:杀死指定用户的进程 ; -l:忽略大小写的不一样
pkill 也就是说:kill对应的是PID,pkill对应的是command
crontab 计划任务服务 crond 默认随系统安装,查看是否开启:
      chkconfig --list crond
/etc/init.d/crond {start|stop|status|reload|restart|condrestart}
ps –ef | grep crond
crontab -e -u Donny
分 时 日 月 周 命令绝对路径 >/dev/null 2>&1 不返回消息提示
‘每’; - ‘到’; ,和  ; /间隔n 。
例子: 00 23,00-07/2
/application/apache/bin/apachectl graceful
天天晚上23点到第二天早上7点 每隔2隔小时 重启阿帕奇服务 注意分不能为
/30
开发—虚拟机测试—IDC机房测试环境—IDC正式环境(分组,灰度发布)
ps 报告当前系统的进程状态: ps -aux | grep 列出须要的进程 或者ps -ef
-a 显示全部终端机下执行的程序,除了阶段做业领导者以外
-u 以用户为主的格式来显示程序情况,也可以使用用户名称来指定
-x 显示全部程序,不以终端机来区分
-f 显示UID,PPIP,C与STIME栏位。
-e显示全部程序。
pstree 树状图的方式展示进程之间的派生关系,显示效果比较直观
显示当前全部进程的进程号和进程id: pstree -p
显示全部进程的全部详细信息,遇到相同的进程名能够压缩显示: pstree -a
top 动态查看系统进程
nice 指定的进程调度优先级,例子:nice -19 tar zcf pack.tar.gz documents
nohup 将程序以忽略挂起信号的方式运行起来,若是使用nohup命令提交做业,那么在缺省状况下该做业的全部输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
pgrep 名称为依据从运行进程队列中查找进程,
-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID。
显示用户为donny,进程名为sh 的进程PID: pgrep -u donny sh
很是危险的系统命令(5 个)
mv rm fdisk parted dd
parted 与fdisk同样分区可是更强大,可调整还能够支持NTFS,FAT32格式
linux 系统3位剑客1小弟(3 个)
grep sed awk tr
grep 三剑客老三 grep a * 查找当前目录下包含a 的文件,并输出文件名:该行
-i 不区分大小写
–v 反选
–q不返回任何信息除了正确与否
-n 输出显示所在行行号
-o 只显示匹配的内容,每一个分一行显示出来
-w 把筛选当作一个单词 做用与<>同样
-x 只有筛选在这同样才显示 grep -x “bin” abc
-P 启用perl语言数据库

  • -E 启用扩展正则表达’
    -r 递归查下去 grep -r “abc” dir/
    -f 比较两个文件相同打印出来 grep –f file1 file2 -v 反选
    grep -Eo "\<[a-Z]{3}\>" file1 --color
    grep -Ei "\<[a-Z][a-Z][a-Z]\>" file1 --color 都是匹配3个字符
    grep -Ei "\<...\>" file1 --color
    echo "abccccc" |grep -Ei "abc+" –color 1个多个
    echo "abccccc" |grep -Ei "abc
    " –color 0个多个
    echo "abccccc" |grep -Ei "abc?" –color 任意1个
    echo "abccccc" |grep -Ei "abc{3}" –color 匹配3个c
    echo "a2523423fjaig423n2352k24n" | grep "^[a-Z]" --color
    a2523423fjaig423n2352k24n
    echo “123d456”| grep “123[a-Z]456” --color
    123d456
    echo “123df456”| grep “123[a-Z]456” --color
    echo “123456”| grep “123[a-Z]456” --color
    都出不来
    echo “123d456”| grep “123[^a-Z]456” --color 中括号里的^尖表示取反
    echo “123456”| grep -i“123.456” --color
    .点表示任意一个字符
    echo “123456”| grep -i“123” --color
    表明 前面一个字符有0个或者多个 ,后面没有
    echo “123456”| grep -i“123.” --color
    .
    表明任意字符串
    echo “123456”| grep -Ei“(123)” --color
    小括号当一个总体 E显示出来
    grep “abc” dir/
    在目录dir下全部文件中查找含有abc字符串的文件
    echo "rich.wang@sohu-163.com.cn" | grep -Ei “[a-Z0-9.%#!-]+@[a-Z0-9.-]+.[a-Z]{2,3}” --color
    筛选须要的内容 (-v 排除的内容) 例如:
    ①grep 20 -A 10 打印a文件的20行与后面10行 after
    ②grep 25 -C 5 a 打印25行的先后5行 context
    ③grep 30 -B 10 a打印 30行的前10行 before
    sed stream editor linux三剑客老二,流编辑器,实现对文件的增删改替换
    --------- tr小弟 # cat file | tr "abc" "xyz" > new_file
    【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
    结合awk 将文件权限输出rwx-改成 数字显示例子: ls –l /donny | cut –c2-10 | tr “rwx-” “4210” | awk –F“” ‘{print $1+$2+$3“”$4+$5+$6“”$7+$8+$9}’ -------

    sed 把文件所选内容每行依次,读到内存模式空间,再匹配正则 ,匹配则完整输出整行,再输出模式空间中的内容,因此匹配的会被打印两次
    例如:sed ‘/abc/p’ file1这条命令的执行过程
    将file1文件内容每行依次读到内存模式空间,匹配abc 字符的则输出整行,不匹配则不输出,而后默认地将模式空间中的该行打印出来,因此匹配的会被打印两行,而后再进行下一行重复工做直到末行。
    p s d c a i这些操做都是针对模式空间 p打印a在下一行架i在上一行加c修改本行d删除 s替换
    sed -n '5p' file1
    sed -n '1,5p' file1
    sed -n '$p' file1 打印最后一行
    sed -n '/^root/p' file1
    sed '3iabc' file1 在3行上一行加一行abc
    sed "3iabc\ndef" file1 在第三行上面加两行
    sed '$arich' file1 在最后一行下面加一行rich
    sed '/localhost/aredhat' file1 在包含locolhost的行下添加一行写redhat
    sed '3crich' file1 把第3行改为rich
    sed '/root/crich' file1 把包含root的行 改为rich
    sed '3d' file1 删掉第3行
    sed ‘3d; 5d’file = sed ‘/abc/d; /def/d’file =sed -e ‘3d’ –e ‘5d’file
    sed '1,3d' file1 把1到3行都删掉
    sed '3,$d' file1 把3到末尾行的都删掉
    sed '/abc/d' file1 把包含abc的都删掉
    sed '/abc/!d' file1 把包含abc的行不删掉,其余都删掉
    sed '/^$/d' file1 空白行都删掉
    sed '/^\s$/d' file1 把全s行都删掉
    echo "30%" | sed 's/%//'
    = echo "30%" | tr –d “%”
    sed 's/root/rich/' file1 每行第一个root改成rich
    = tr “ root” ”rich”
    sed 's/root/rich/g' file1 每行全部也就是全文章改
    sed 's/root/rich/2' file1 每行第二个改
    echo "ab/c def" | sed 's/ab\/c/xyz/'
    echo "a b c" | sed 's/ //g'
    sed '/rich/s/steven/john/g' file1 把rich这一行中的改了
    sed -i '2,4s/^.
    $/def/' file1 把2行到4行全部改了
    var1="root" 赋值root到变量
    sed "/^$var1/crich" file1 把包含root的行全改了
    sed '/ADDR/s/^/#/' file1 行首加#
    sed '1,3d; s/rich/steven/' file1; 1到3行删除 rich改成steven
    sed -e '1,3d' -e 's/rich/steven/' file1 同上
    sed 's/red/&hat/' file1 在后面加上
    sed '/abc/,/xyz/s/rich/steven/' 匹配abc行与xyz行的
    读取第1行到模式空间
    有没有包含abc, 没有, 不执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含abc...有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含xyz, 没有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含xyz...有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含abc...
    sed '/abc/,/xyz/d' file1 删除从第一个含有abc到含有xyz的行
    sed -n '/abc/,/xyz/p' file1 显示从第一个含有abc到含有xyz的行
    sed '1,/abc/d' file1 删除从第一行到第一个abc的行
    echo "dev abcd" | sed -r 's/[a-z]+ [a-z]+/123/' 所有用123替换
    echo "dev abcd" | sed -r 's/([a-z]+) ([a-z]+)/\2 \1/' 换位置 小括号表示的总体在后面能够用参数\1 、\2 、\3表示 一共能够用9个
    echo "abcdef" | sed -r 's/^..$/111/'
    111
    echo "abcdef" | sed -r 's/^(.).
    $/\1/'
    a
    echo "abcdef" | sed -r 's/^..(.)$/\1/'
    f
    修改selinux的模式 :sed -rin '/^[a-Z]{7}=/s/=.
    /=enforcing/' /etc/selinux/config
    例如: ①sed -n '20,30p' a 打印a文件的20到30行 -n取消默认输出 p默认的打印
    ②sed 's#要替换的字符#想替换成的内容#g' a ,替换格式 sed ‘s###g’a 只改了输出,并无改文件内容,想改内容加参数-i,p打印s替换g全局
    ③-e是容许多项编辑
    ④sed -i 's#abc#bcd#g' find /a -type f -name "*.sh" 先找到/a目录下全部以.sh结尾的文件 而且把全部这些文件里面的abc换成bcd
    abc文件内在包含有abc的行到def的行,中间的有xyz的字符改成333:
    sed ‘/abc/,/def/s/xyz/333/’abc
    sed ‘/DNS/s/^#//;s/yes/no/’ abc
    sed -r‘/IP/s/[0-9.]+/192.168.69.10’ifcfg-eth0
    read –p “please enter an ip:” A
    sed –r “/IP/s/[0-9.]+/$A/” ifcfg-eth0
    awk 三剑客老大,过滤输出,一门语言用于处理日志和文本。
    取出包含字符串的行 : awk ‘/root/’ /etc/passwd
    第二个参数包含 awk ‘$2 ~ /root/’ /etc/passwd
    第二个参数等于 awk ‘$2 == /root/’ /etc/passwd
    取反 awk ‘!/root/’ /etc/passwd
    首先看是否有BEGIN语句块,有执行;再逐行查看有没有模式匹配,再执行常规语句块;最后看有没有END语句块,有执行:
    awk –F: ‘BEGIN{print “hello”}/root/{print $1;}END{print “bye”}’ passwd
    输出: hello
    root
    bye
    取出大于1000字节的文件: ls –l | awk ‘NR>1 && $5 >=1000 {print $9;}’
    变量: {print $0 NR NF $NF }
    NR表明行号 例如: awk 'NR>19&&NR<31' a 打印a文件的20到30行 &&而且 NR==30等于, 也能够被print;
    Awk ‘END{print NR}’ abc 打印文件一共有多少行
    NF表明该行有多少列
    -F 指定分隔符 例如:awk -F "[ :]+" '{print $1,$2,$6}' aaa 打印aaa文件中以空格 和冒号:分隔的第一个和第2、六个参数。
    awk 'NR>9&&NR<21' passwd | awk -F "[:]+" '{print $3}' > test.txt ==== awk -F “:”’NR>9&&NR<21{print $3}’passwd > test.txt
    打印出第二个参数为rich 的 最后一个参数:
    awk ‘$2 == “rich”{print $NF}’ abc
    -v选项 传变量到awk, 只用改变外部变量就行
    a=rich
    awk –v x=$a ‘$2==x{print $NF}’ abc
    还能够多个外部变量
    b=wh
    awk –v x=$a –v y=$b‘$2==x && $3!= y {print $NF}’ abc
    变量和正则连用 正则部分须要””括起来
    Awk –v x=$a ‘$5 ~ “^”x ’ file1
    取出ip a 中网卡eth0的IP地址
    ip a | awk ‘/^[ \t]+inet / && !/lo$/ {print $2}’| awk –F/ ‘{print $1}’
    {print}常规语句块中间能够接语句,也能够写成脚本
    awk ‘{if($4 == “wh”)print $2 ;else print $1}’ file1
    awk ‘ {if($4 == “wh”)print $1 ;else if ($4 == “hn”)print $2; else if($4 == “bj”)print $3; else print $5}’ file1
    在awk中接shell命令:
    找到能够登陆的用户,而且再当前文件夹下建立全部用户的目录:
    awk -F: '/bash$/{print $1;}' /etc/passwd
    for i in awk -F: '/bash$/{print $1;}' /etc/passwd ;do

    mkdir $i
    done;
    等同于 awk ‘/bash$/{system(“useradd –g groupname ”$1)}’ /etc/passwdapache

其它(16个)
echo printf rpm yum watch alias unalias clear history eject time
nc xargs exec export unset ntsysv
echo 直接输出指定的字符串
搞点有趣的,用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
• \e[1;31m 将颜色设置为红色
• \e[0m 将颜色从新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,×××=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,×××=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其余数字参数:0 关闭全部属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐vim

printf C语言输出
rpm 安装软件包 例如:rpm -ivh Donny-package.rpm
卸载软件包 rpm -e Donny-package 不能够有后缀.rpm
yum 安装程序
watch 检测一个命令的运行结果,默认 watch 会以 2s 的间隔重复运行命令,-n 指定时间间隔
-d 高亮度显示变化的区域,能够拿他来监测你想要的一切命令的结果变化,
好比 tail 一个 log 文件,ls 监测某个文件的大小变化
watch -n 1 -d netstat -ant # 命令:每隔一秒高亮显示网络连接数的变化状况
watch -n 1 -d 'pstree|grep http' # 每隔一秒高亮显示http连接数的变化状况。 后面接的命令若带有管道符,须要加''将命令区域归整。
watch 'netstat -an | grep:21 | \ grep<模拟***客户机的IP>| wc -l' # 实时查看模拟***客户机创建起来的链接数
watch -d 'ls -l|grep scf' # 监测当前目录中 scf' 的文件的变化 watch -n 10 'cat /proc/loadavg' # 10秒一次输出系统的平均负载
watch uptime watch -t uptime watch -d -n 1 netstat -ntlp watch -d 'ls -l | fgrep goface' # 监测goface的文件
watch -t -differences=cumulative uptime watch -n 60 from # 监控mail watch -n 1 "df -i;df" # 监测磁盘inode和block数目变化状况
alias 查看和设置别名 例子:查看别名 直接输入alias,设置别名 alias cp='cp -i'
永久生效须要追加到/etc/profile和/etc/bashrc文件中
echo“alias cp=‘cp -i’”>>/etc/profile && echo“alias cp=‘cp -i’”>>/etc/bashrc
unalias 取消别名
clear 清除当前屏幕终端上的任何信息
history 历史记录
eject 退出抽取式设备
time 用于统计给定命令所花费的总时间 例如: time ls
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短期包括其余进程所占用的时间片,和进程被阻塞时所花费的时间。
user时间是指进程花费在用户模式中的CPU时间,这是惟一真正用于执行进程所花费的时间,其余进程和花费阻塞状态中的时间没有计算在内。
sys时间是指花费在内核模式中的CPU时间,表明在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
nc
xargs 从标准输入获取内容和执行命令 -n 一行几个 例如 xargs -n 4 < test.txt 用一行输出test.txt的全部内容
不加参数默认无限大,1行全显示与管道连用 | xargs
-i 参数 把前面找到的文件关联到{}中,而且将xargs的每项名称,一行一行复制给{},让不支持批处理的命令按行执行
例如: find / -type f -name “donny.*”| xargs -i mv {} /tmp/
exec 调用并执行指令的命令
查找全部rpcuser用户的文件,而且把他们拷贝到/mnt下
find / -user rpcuser -exec cp -Rfp {} /mnt \;
export 将上一个shell的变量,利用到下一个shell中
unset 删除已定义的shell变量 -f 仅删除函数 -v 仅删除变量c#

相关文章
相关标签/搜索