【Linux】玩转Linux操作系统(十三)进程管理

进程管理

  1. 查看进程 - ps

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

    [root ~]# pstree
    systemd─┬─AliYunDun───18*[{AliYunDun}]
            ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
            ├─2*[agetty]
            ├─aliyun-service───2*[{aliyun-service}]
            ├─atd
            ├─auditd───{auditd}
            ├─dbus-daemon
            ├─dhclient
            ├─irqbalance
            ├─lvmetad
            ├─mysqld───28*[{mysqld}]
            ├─nginx───2*[nginx]
            ├─ntpd
            ├─polkitd───6*[{polkitd}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─sshd───sshd───bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            └─tuned───4*[{tuned}]
    
  3. 查找与指定条件匹配的进程 - pgrep

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

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

    结束名为mysqld的进程。

    [root ~]# pkill mysqld
    

    结束hellokitty用户的所有进程。

    [root ~]# pkill -u hellokitty
    

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

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

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

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

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

    [root ~]# fg %4
    redis-server
    

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

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

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

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

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

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

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

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

    [root ~]# top
    top - 23:04:23 up 3 days, 14:10,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks:  65 total,   1 running,  64 sleeping,   0 stopped,   0 zombie
    %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
    KiB Mem :  1016168 total,   191060 free,   324700 used,   500408 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   530944 avail Mem
    ...
    
    • -c - 显示进程的整个路径。
    • -d - 指定两次刷屏之间的间隔时间(秒为单位)。
    • -i - 不显示闲置进程或僵尸进程。
    • -p - 显示指定进程的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值