该命令可以列出当前正在运行的进程。
$ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 188912 1900 ? Ss Jul09 0:52 init -z
root 2 0.0 0.0 0 0 ? S Jul09 0:00 [kthreadd/319573]
root 3 0.0 0.0 0 0 ? S Jul09 0:00 [khelper/319573]
root 55 0.0 0.0 41632 136 ? Ss Jul09 0:05 /lib/systemd/systemd-udevd
root 56 0.0 0.4 28664 1152 ? Ss Jul09 1:03 /lib/systemd/systemd-journald
root 125 0.0 0.1 47568 320 ? Ss Jul09 0:10 /sbin/rpcbind -f -w
root 255 0.0 0.1 65452 336 ? Ss Jul09 0:24 /usr/sbin/sshd -D
mysql 269 0.0 0.3 1158712 916 ? Ssl Jul09 80:22 /usr/sbin/mysqld
root 276 0.0 0.0 12780 8 tty2 Ss+ Jul09 0:00 /sbin/agetty --noclear tty2 linux
root 277 0.0 0.0 12780 8 tty1 Ss+ Jul09 0:00 /sbin/agetty --noclear --keep-baud console 115200 38400 9600 vt220
root 278 0.0 0.0 124920 4 ? Ss Jul09 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 279 0.0 0.4 125644 1136 ? S Jul09 0:35 nginx: worker process
root 458 0.0 26.5 131664 69716 ? Ss Jul09 42:40 /usr/bin/python3 /usr/local/bin/ssserver -c /etc/ssserver.json -d start
root 24005 0.0 1.5 90396 3972 ? Ss 21:05 0:00 sshd: root@pts/1
root 24014 0.0 0.8 18368 2200 pts/1 Ss 21:05 0:00 -bash
root 24076 0.0 0.5 34368 1536 pts/1 R+ 21:10 0:00 ps aux
这些信息所代表的含义如下。
USER
表示该进程所属的用户。PID
进程编号。%CPU
使用 CPU 资源百分比。%MEM
内存占用率VSZ
最大可以占用多少内存。RSS
以使用了多少内存。TTY
终端。STAT
进程的状态,总共有几种状态。D 不可中断、R 运行中、S 终端、T 停止、Z 僵死。START
进程启动时间。TIME
进程运行时间。COMMAND
启动进程的命令。egrep
命令可以从文本中匹配相应的字符,然后返回相应字符的整行。这里我们就可以利用 管道 的概念,把 pa aux
的输出,变成 egrep
命令的输入,然后搜索我们想要的目标进程。
$ ps aux | egrep mysql // 找到 mysql 相关的进程
mysql 269 0.0 0.3 1158712 916 ? Ssl Jul09 80:23 /usr/sbin/mysqld // 这个就 mysql 的主进程,这样我们就拿到了进程号 269
root 24123 0.0 0.3 11228 928 pts/3 S+ 21:27 0:00 grep -E --color=auto mysql
终止进程。
kill pid // 例如 kill 269 终止 mysql 进程
有时候一些进程有相关的依赖,会终止不了,那么可以加个参数 kill -9 pid
强行终止进程。
每一个黑乎乎的窗口,就代表了一个 终端
,Linux 其实给我们提供了多个连接终端,让我们可以操作多任务,不同终端的切换使用 ctrl F1 ~ F6
快捷键,总共有 6 个。在每一个终端上面,我们能登陆不一样的用户,操作不一样的任务。
那么在一个终端上面,也能够使用多任务吗?其实也是可以的。在 Linux 系统内部也内置了一套这样的 job
机制,让我们可以把任务放到后台运行,假设执行多个任务可以通过这些任务的编号来回切换。
我们使用 ping
命令,这时整个终端就被这个任务完全的占用了。
$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.079 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.090 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.054 ms
...
我们只需要按下 ctrl + z
就能让 ping 这个任务变成一个后台任务。同时,它会返回后台的任务信息。
[1] + 1243 continued ping 127.0.0.1
[1]
就是该任务的编号。
如何把后台的任务切换到前台?需要使用 fg
命令。
fg %1
有些服务我们是永远也不用在前台运行的,只要它默默的在后台呆着,那么只要使用 nohup cmd &
执行它,它就会运行在后台。
nohup ping 127.0.0.1 &