ps
:报告当前进程快照。top
:显示任务。kill
:给一个进程发送信号。shutdown
:关机或重启系统。
一个程序可以发动另一个程序被表述为一个父进程可以产生一个子进程,内核维护每个进程的信息,以此来保持事情有序,系统分配给每个进程一个数字,这 个数字叫做进程 (process) ID 或 PID。
查看进程
使用ps
(process status)可以查看进程。TTY 是 “Teletype”(直译电传打字机) 的简写,是指进程的控制终端;TIME 字段表示进程所消耗的 CPU 时间数量。
# 默认列出与当前终端会话相关的进程
ps
进程状态,输出结果中,标题STAT,是state的简写。
R
:运行中,这意味着,进程正在运行或准备运行。S
:正在睡眠。进程没有运行,而是,正在等待一个事件,比如 说,一个按键或者网络分组。D
:不可中断睡眠。进程正在等待 I/O,比方说,一个磁盘驱动器的 I/O。T
:已停止,已经指示进程停止运行。Z
:一个死进程或“僵尸”进程。这是一个已经终止的子进程, 但是它的父进程还没有清空它。<
:一个高优先级进程。N
:低优先级进程。
# 展示所有进程
ps x
# 显示属于每个用户的进程信息
ps aux
使用top动态查看进程
虽然 ps 命令能够展示许多计算机运行状态的信息,但是它只是提供 ps 命令执行时刻的机器状
态快照。为了看到更多动态的信息,我们使用 top 命令。
top 命令以进程活动顺序显示连续更新的系统进程列表(默认情况下,每三秒钟更新一次)。top 显示结果由两部分组 成:最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。
top
上面的信息就类似于我们桌面的任务管理器,我们可以继续按q或者ctrl-c退出命令。
使用 kill 命令给进程发送信号
使用 kill 命令,可以指定我们想要终止的进程 PID。虽然这个命令看上去很直白,但是它的含义不止于此。这个 kill 命令不是真的“杀死”程 序,而是给程序发送信号。信号是操作系统与程序之间进行通信时所采用的几种方式中的一 种。在使用 Ctrl-c 和 Ctrl-z 的过程中我们已经看到信号的实际用法。当终端接受了其中一个 按键组合后,它会给在前端运行的程序发送一个信号。在使用 Ctrl-c 的情况下,会发送一个叫 做 INT(Interrupt, 中断)的信号;当使用 Ctrl-z 时,则发送一个叫做 TSTP(Terminal Stop, 终端停止)的信号。
kill [-signal] PID...
如果在命令行中没有指定信号,那么默认情况下,发送 TERM(Terminate,终止)信号,常见的一些信号如下:
- 1 或 HUP:挂起。
- 2 或 INT:中断。实现和 Ctrl-c 一样的功能,由终端发送,通常, 它会终止一个程序。
- 9 或 KILL:杀死。当其它 终止信号失败后,再使用它。
- 15 或 TERM:终止。这是 kill 命令发送的默认信号,如果程序仍然 “活着”,可以接受信号,那么这个它会终止。
- 18 或 CONT:继续。在一个停止信号后,这个信号会恢复进程的运行。
- 19 或 STOP:停止。这个信号导致进程停止运行,而不是终止。
- 3 或 QUIT:退出。
- 20 或 TSTP:终端停止。当按下 Ctrl-z 组合键后, 终端发送这个信号。
杀死进程
kill -9 13601
关机或重启系统
使用 shutdown
命令用于安全地关闭或重启。
常见的参数
-h
:将系统的服务停掉之后关闭系统(常用)。-r
:将系统的服务停掉之后就重启系统(常用)。-k
:不是真的关机,只是发送警告消息出去。
关闭系统(关机)
# 立即关机
shutdown -h now
# 10min 关机
shutdown -h 10
# 10min后关闭系统,并发送一条消息给所有用户
shutdown -h 10 "System will be down for maintenance"
重启系统
# 立即重启
shutdown -r now
# 22:00 重启系统
shutdown -r 22:00
取消计划的关机或重启
# 取消之前计划的 shutdown 操作
shutdown -c
发送警告
# 仅发出警告消息,系统并不会关机
shutdown -k now 'this system will reboot'