Skip to content

进程管理

  • ps [-e -f] 查看进程
  • -e 显示全部进程;-f 显示详细信息
  • image-20230316214302697
  • 查找进程 ps -ef | grep name
  • kill [-9] 进程ID 关闭进程
  • -9:强制关闭

工作计划

  • 使用 crontab 实现计划(周期)任务
  • 添加计划任务 crontab -e
  • 查看已经添加了的任务 crontab -l
  • 删除任务 crontab -r

工作控制

  • 信号
  • SIGHUP (Hangup)
    • 描述: SIGHUP 信号通常用于通知进程重新加载其配置或进行一些其他操作,通常由终端会话结束时触发。例如,当你关闭一个终端会话时,会向该会话中的进程发送 SIGHUP 信号,以便它们有机会执行清理工作或重新加载配置。
  • SIGINT (Interrupt)
    • 描述: SIGINT 信号通常由用户按下Ctrl+C组合键来触发,用于终止当前运行的进程。这是一种常见的方式来停止正在运行的程序。
  • SIGTERM (Termination)
    • 描述: SIGTERM 信号是用于请求进程正常终止的信号。进程可以捕获该信号并执行清理工作,然后正常退出。
  • SIGKILL (Kill)
    • 描述: SIGKILL 信号是用于强制终止进程的信号,进程无法捕获或忽略它。使用 SIGKILL 会立即终止进程,而不允许进程执行清理操作。
  • 使用 Ctrl-C 来停止命令(将进程 stopped)的执行时,shell 会发送一个 SIGINT 信号到进程。
#!/usr/bin/env python
import signal, time
# 捕获了ctrl-c发送的信号
def handler(signum, time):
    print("\nI got a SIGINT, but I am not stopping")

signal.signal(signal.SIGINT, handler)
i = 0
while True:
    time.sleep(.1)
    print("\r{}".format(i), end="")
    i += 1
  • 一个不会在 ctrl-c 时终止的程序
  • 可以使用 ctrl-\ 发送 SIGQUIT 信号终止程序
  • Ctrl-Z 会让 shell 发送 SIGTSTP 信号(会将进程挂起为 suspended
  • 关闭终端(ssh 断开连接)会发送另外一个信号 SIGHUP

  • jobs 命令会列出当前终端会话中尚未完成的全部任务

  • 后台运行命令,在命令后面添加 $ 后缀
  • 恢复进程 bg %1
    • fg 恢复到前台执行,并输出到标准输出
    • % 加上进程的 id
  • 杀死进程 kill %1 kill -SIGHUP %1 (针对 job 的的 kill)
    • 可以用于发送任何信号 kill -STOP %1
      $ sleep 1000
      ^Z
      [1]  + 18653 suspended  sleep 1000
      
      $ nohup sleep 2000 &
      [2] 18745
      appending output to nohup.out
      
      $ jobs
      [1]  + suspended  sleep 1000
      [2]  - running    nohup sleep 2000
      
      $ bg %1
      [1]  - 18653 continued  sleep 1000
      
      $ jobs
      [1]  - running    sleep 1000
      [2]  + running    nohup sleep 2000
      
      $ kill -STOP %1
      [1]  + 18653 suspended (signal)  sleep 1000
      
      $ jobs
      [1]  + suspended (signal)  sleep 1000
      [2]  - running    nohup sleep 2000
      
      $ kill -SIGHUP %1
      [1]  + 18653 hangup     sleep 1000
      
      $ jobs
      [2]  + running    nohup sleep 2000
      
      $ kill -SIGHUP %2
      
      $ jobs
      [2]  + running    nohup sleep 2000
      
      $ kill %2
      [2]  + 18745 terminated  nohup sleep 2000
      
      $ jobs
      

监控

top 查看信息(类似任务管理器),5 s 刷新一次 - image-20230316233157886 - 第一行的 load average 表示 1 5 15 分钟内 cpu 平均负载 - 先除以 cpu 的核心数 - 若是 load < 0.7 并不会去关注他; - 若是 0.7< load < 1 的时候我们就需要稍微关注一下了,虽然还可以应付但是这个值已经离临界不远了; - 若是 load = 1 的时候我们就需要警惕了,因为这个时候已经没有更多的资源的了,已经在全力以赴了; - 若是 load > 5 的时候系统已经快不行了,这个时候你需要加班解决问题了 - 三个数值结合起来可以分析趋势 - - image-20230316233509376 - image-20230316233650098 - 重定向 top -b > test.txt - image-20230316234133725

  • ps 静态查看进程

    • image.png|500
    • 查看全部进程 ps aux
  • 打印进程树 pstree

  • 网络监控

  • image-20230316234642412