首页 > 代码库 > 常用Linux命令 备忘录

常用Linux命令 备忘录

1. 删除0字节文件:

    find -type f -size 0 -exec rm -rf {} \;                //在exec中,{}表示find到的文件,\;表示结束

 

2. 查看进程

  按内存从大到小排列:ps -e  -o "%C  : %p : %z : %a"|sort -k5 -nr

 按cpu利用率从大到小排列:ps -e  -o "%C  : %p : %z : %a"|sort  -nr

 

3. 检查SCSI硬盘Cache是否打开:

    sdparm -g WCE /dev/sda |grep WCE |awk ‘{print $2}‘

 

4. 查看http的并发请求数及其TCP连接状态:

    netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

 

5. 查看TCP连接数:

    netstat -na | grep "$ip:80" | wc -l

 

6. 查看当前有哪些进程在运行:

   ps -A

 

7. 显示运行3级别开启的服务:

    ls /etc/rc3.d/S* |cut -c 15- 

 

8. 查看CPU的数量:

    cat /proc/cpuinfo |grep -c processor

 

9. 查看CPU负载:

    cat /proc/loadavg

 

10. 查看CPU信息:

    mpstat 1 1                //检查%idle是否过低

 

11. 查看内存空间:

    free                //检查free值是否过低,也可以用cat /proc/meminfo

 

12. 查看swap空间:

    free                //检查swap used值是否过高  如果swap used值过高,进一步检查swap动作是否频繁

    vmstat 1 5                //观察si和so值是否较大

 

13. 查看磁盘空间:

    df -h        //检查是否有分区使用率(Use%)过高(比如超过90%)  如发现某个分区空间接近用尽

    du -cks * | sort -rn | head -n 10              //进入分区的挂载点,找出占用空间最多的文件或目录

 

14. 查看磁盘I/O负载:

    iostat -x 1 2                //检查I/O使用率(%util)是否超过100%

 

15. 查看网络负载:

    sar -n DEV                //检查网络流量(rxbyt/s, txbyt/s)是否过高

 

16. 网络错误:

    netstat  -i                //检查是否有网络错误(drop fifo colls carrier)  也可用命令:cat /proc/net/dev

 

17. 网络连接数目:

    netstat -an | grep -E "^(tcp)" | cut -c 68- | sort | uniq -c | sort -n

 

18. 查看进程总数:

    ps aux | wc -l                //检查进程个数是否正常

 

19. 输出给定时间间隔的服务器的状态值:

    vmstat 3 5                //第一个参数:采样间隔,单位是秒;第二个参数:采样数量

 

20. 实时进程查看:

    top -id 1                //观察是否有异常进程出现

 

21. 网络状态、DNS、网关信息:

    netstat  -a                //查看网络状态

    route  -n                //查看网关信息

    cat /etc/resolvconf/resolv.conf.d/original                //DNS(Ubuntu)

 

22. 登陆用户数:

    who | wc -l                //查看登录用户数,也可以用命令:uptime

 

23. 系统日志:

    grep -i error /var/log/syslog                //通过搜寻异常关键字,检查是否有异常错误记录
    grep -i fail /var/log/syslog
    egrep -i ‘error|warn‘ /var/log/syslog

 

24. 系统启动信息日志:

    dmesg | tail -f                //检查最近一次开机的异常错误记录

 

25. 打开文件数目:

    lsof | wc -l                //检查打开文件总数

 

26. 查看80端口进程:

    lsof -i :80|grep -v "ID"

 

27. 查找僵死进程:

    ps -eal | awk ‘{ if ($2 == "Z") {print $4}}‘

 

28.查看有多少个活动的PHP-cgi进程:

    netstat -anp | grep php-cgi | grep ^tcp | wc -l

29. 一次创建多个目录:

    mkdir -p /home/ggf/shell {test1,test2,test3}

 

30. 快速备份一个文件:

    cp file_name{,.bkp}                //重命名一个文件:mv a.txt   b.txt

 

31. 创建空文件或清空一个现有文件:

    > test.txt

 

32. 显示剩余内存:

    free -m | grep cache | awk ‘/[0-9]/{ print $4" MB" }‘

 

33. 获取test.txt文件中第50-60行内容:

    < test.txt sed -n ‘50,60p‘

 

34. 搜索在30天内被创建或者修改过的文件:

    find /usr/bin -type f -mtime -30 

    find /usr/bin -type f -amin -30        // 搜索出30分钟内被访问过的文件

 

35. 搜索以a-z结尾的行,行尾搜索$:

    grep -n ‘[a-z]$‘ 123.txt 

 

36. 查看当前目录下文件的个数:

    ls -al |grep "^-"|wc -l

 

37. 显示日志最新内容(不断刷新显示最新日志):

    tail -n 10 -f /var/log/syslog.log

 

38. 清除文件内容:

    cat /dev/null > /home/users/example/aa.log

 

39. 使用base64编码 input.txt文件,并输出到input.b64:

    openssl base64 -e -in input.txt -out input.b64

 

40. 使用base64 编码/解码字符串:

     编码:echo -n ‘12345ssdlh‘ | openssl base64 -e

     解码:echo ‘MTIzNDVzc2RsaA==‘ | openssl base64 -d

 

41. 显示所有22端口(ssh)连接:

    netstat -nt |grep :22  |awk ‘{print $5}‘ |sort  |uniq -c

 

42. 删除当前目录下所有以.tmp为后缀名的文件:

    find  .-type f -name "*.tmp"  -delete

 

43. MD5和SHA校验:

     md5sum  filename

     shasum   filename

 

44. 一组查询硬件信息的命令:

    lscpu: 用于查询CPU信息

    lshw: 显示硬件信息表(需要root权限,最好输出到文件而不是终端)

    hwinfo: 显示硬件信息(debug info,最好输出到文件。否则会像在 / 目录执行tree命令并输出到终端一样悲催)

    lspci: PCI总线及设备信息

    lsblk: 列出块设备信息

    lsusb: 列出USB总线信息

    lsscsi: 列出SCSI设备信息

 

45. 获得当前目录下文件的 md5指纹:

    find . -type f -exec md5sum {} \; > sum.md5

 

46. 查看端口-进程 的详细情况:

    lsof -Pan -i tcp -i udp

 

47. 猜测目标主机使用的操作系统(使用网络扫描工具 nmap):

    nmap -O --osscan-guess www.ifeng.com                //需要root权限


48. 扫描主机网络端口:

     nmap -sS 61.18.85.17                //需要root权限,扫描主机TCP端口开放情况

     nmap -sU 61.18.85.17                //需要root权限,扫描主机UDP端口开放情况

     nmap -sTU localhost                //检查本机(localhost)开放的端口

 

49. 探测域中的主机是否在线:

     nmap  -sP    192.168.1.0/24                //使用ping命令扫描,打印出对扫描做出响应的主机

     nmap  -sL    192.168.1.0/24               //列出指定网域上的每台主机,不发送任何报文到目标主机

 

50. Ubuntu12.04系统服务管理:

     initctl  list  | grep start                //查看系统当前运行状态为start的服务

 

51. 粉碎一个名为test.txt的文件:

    shred –u test.txt                //用随机的字符码重复覆盖文件,这条命令的功能适合实现文件粉碎的功效

                                                              //此命令包含在GNU core utilities软件包中。    参数 -u,--remove  覆盖后截断并删除文件

 

52. 安全删除工具wipe:

    删除文件:wipe file.txt
    删除目录:wipe -r /home/user/test/
    删除分区:wipe /dev/sdb1

 

53.快速删除海量文件--使用rsync:

    rsync --delete-before -a -H -v --progress --stats/tmp/test/log/     //快速删除海量日志的一个方法(rsync用的的替换原理,删除速度快)

                                                                                                                 //-delete-before 接收者在传输之前进行删除操作

                                                                                                                 //-a 归档模式,表示以递归方式传输文件,并保持所有文件属性

                                                                                                                 //-H 保持硬连接的文件

                                                                                                                 //-v 详细输出模式

                                                                                                                 //-progress 在传输时显示传输过程

                                                                                                                 //-stats 给出某些文件的传输状态

 

54. 关于软件包的一组命令:

    dpkg -L apt                //查看已安装的文件清单

    dpkg -S /usr/bin/apt-get                //查找apt-get属于哪个包

    dpkg-reconfigure  apt                //重新配置apt包

    apt-cache depends apt                //查找apt包的依赖包

    apt-cache rdepends apt                //查找依赖apt包的软件包

 

55. 使用最多的十个命令:

    history | sed -e ‘s/^sudo //‘ | awk ‘{print $2}‘ | sort |uniq -c |sort -rn | head                //运行过的命令会被Ubuntu保存到~.bash_history

                                                                                                                        //uniq命令可以查出或删除文件中相邻的重复行,通常与sort一起使用

 

56. 一组文件相关的命令:

    切割及合并:

        split  -b  1MB  -d  MySQL.log  mysql-log_                                     //以1MB为单位分割mysql.log文件,保存为以mysql-log_xx 为文件名的文件集

        split -l 1000 syslog.log syslog_                                                   //以一千行为一个单位分割syslog.log日志文件,保存为syslog_xx系列文件集

        cat  mysql-log_00  mysql-log_01  mysql-log_02 > mysql-log     //合并分割的文件

 

    替换字符:

        cat file | tr p  P                                                                               //单字符替换

        cat file | tr [a-z] [A-Z]                                                                     //小写字母变大写字母

 

    提取文本:

        cut -d ‘ ‘ -f1,3 file                                                             //提取第一和第三字段的文本
        cut -d ‘ ‘ -f1-3 file                                                             //提取第二到第四字段的文本

 

    文本排序:

       sort -n file.txt   //按数字进行排序

 

   为孤儿文件找爸爸:

       find .  -type f  -nouser  -exec chown  username {} \;     // 在当前目录下,将无主文件的user改为username

 

    查找特殊文件:

       find . -type d -perm -1000 -print        //在当前目录下查找t位有效的文件

        find . -type f -perm -4000 -print         //在当前目录下查找查找suid位有效的文件

        find . -type f -perm -2000 -print         //在当前目录下查找sgid位有效的文件

        find  /dev  -nogroup -nouser  -print   //查找无主文件

            

 

57.

 

 

58.

 

 

59.

 

 

60.

 

 

 

 

 

注:

        重要原则:

                        Type less, accomplish more (少打多做)

                        DRY, don‘t repeat yourself (不要重复你自己)

                        Care about your tool (关心你的工具)

 

附:

        学习命令每天都应该登录的网站:http://commandlinefu.cn/

 

常用Linux命令 备忘录