• 进程管理

    进程管理

    1. 查看进程 - ps

      1. [root ~]# ps -ef
      2. UID PID PPID C STIME TTY TIME CMD
      3. root 1 0 0 Jun23 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
      4. root 2 0 0 Jun23 ? 00:00:00 [kthreadd]
      5. ...
      6. [root ~]# ps -ef | grep mysqld
      7. root 4943 4581 0 22:45 pts/0 00:00:00 grep --color=auto mysqld
      8. mysql 25257 1 0 Jun25 ? 00:00:39 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
    2. 显示进程状态树 - pstree

      1. [root ~]# pstree
      2. systemd─┬─AliYunDun───18*[{AliYunDun}]
      3. ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
      4. ├─2*[agetty]
      5. ├─aliyun-service───2*[{aliyun-service}]
      6. ├─atd
      7. ├─auditd───{auditd}
      8. ├─dbus-daemon
      9. ├─dhclient
      10. ├─irqbalance
      11. ├─lvmetad
      12. ├─mysqld───28*[{mysqld}]
      13. ├─nginx───2*[nginx]
      14. ├─ntpd
      15. ├─polkitd───6*[{polkitd}]
      16. ├─rsyslogd───2*[{rsyslogd}]
      17. ├─sshd───sshd───bash───pstree
      18. ├─systemd-journal
      19. ├─systemd-logind
      20. ├─systemd-udevd
      21. └─tuned───4*[{tuned}]
    3. 查找与指定条件匹配的进程 - pgrep

      1. [root ~]$ pgrep mysqld
      2. 3584
    4. 通过进程号终止进程 - kill

      1. [root ~]$ kill -l
      2. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
      3. 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
      4. 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
      5. 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
      6. 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
      7. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
      8. 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
      9. 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
      10. 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
      11. 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
      12. 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
      13. 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
      14. 63) SIGRTMAX-1 64) SIGRTMAX
      15. [root ~]# kill 1234
      16. [root ~]# kill -9 1234

      例子:用一条命令强制终止正在运行的Redis进程。

      1. ps -ef | grep redis | grep -v grep | awk '{print $2}' | xargs kill
    5. 通过进程名终止进程 - killall / pkill

      结束名为mysqld的进程。

      1. [root ~]# pkill mysqld

      结束hellokitty用户的所有进程。

      1. [root ~]# pkill -u hellokitty

      说明:这样的操作会让hellokitty用户和服务器断开连接。

    6. 将进程置于后台运行。

      • Ctrl+Z - 快捷键,用于停止进程并置于后台。
      • & - 将进程置于后台运行。
      1. [root ~]# mongod &
      2. [root ~]# redis-server
      3. ...
      4. ^Z
      5. [4]+ Stopped redis-server
    7. 查询后台进程 - jobs

      1. [root ~]# jobs
      2. [2] Running mongod &
      3. [3]- Stopped cat
      4. [4]+ Stopped redis-server
    8. 让进程在后台继续运行 - bg

      1. [root ~]# bg %4
      2. [4]+ redis-server &
      3. [root ~]# jobs
      4. [2] Running mongod &
      5. [3]+ Stopped cat
      6. [4]- Running redis-server &
    9. 将后台进程置于前台 - fg

      1. [root ~]# fg %4
      2. redis-server

      说明:置于前台的进程可以使用Ctrl+C来终止它。

    10. 调整程序/进程运行时优先级 - nice / renice

    11. 用户登出后进程继续工作 - nohup

      1. [root ~]# nohup ping www.baidu.com > result.txt &
    12. 跟踪进程系统调用情况 - strace

      1. [root ~]# pgrep mysqld
      2. 8803
      3. [root ~]# strace -c -p 8803
      4. strace: Process 8803 attached
      5. ^Cstrace: Process 8803 detached
      6. % time seconds usecs/call calls errors syscall
      7. ------ ----------- ----------- --------- --------- ----------------
      8. 99.18 0.005719 5719 1 restart_syscall
      9. 0.49 0.000028 28 1 mprotect
      10. 0.24 0.000014 14 1 clone
      11. 0.05 0.000003 3 1 mmap
      12. 0.03 0.000002 2 1 accept
      13. ------ ----------- ----------- --------- --------- ----------------
      14. 100.00 0.005766 5 total

      说明:这个命令的用法和参数都比较复杂,建议大家在真正用到这个命令的时候再根据实际需要进行了解。

    13. 查看当前运行级别 - runlevel

      1. [root ~]# runlevel
      2. N 3
    14. 实时监控进程占用资源状况 - top

      1. [root ~]# top
      2. top - 23:04:23 up 3 days, 14:10, 1 user, load average: 0.00, 0.01, 0.05
      3. Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie
      4. %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
      5. KiB Mem : 1016168 total, 191060 free, 324700 used, 500408 buff/cache
      6. KiB Swap: 0 total, 0 free, 0 used. 530944 avail Mem
      7. ...
      • -c - 显示进程的整个路径。
      • -d - 指定两次刷屏之间的间隔时间(秒为单位)。
      • -i - 不显示闲置进程或僵尸进程。
      • -p - 显示指定进程的信息。