计算机网络/计算机科学与应用/系统/运维/开发

前台进程和后台进程的区别

前台进程和后台进程的区别:

一、前台进程:输出的结果展示在终端上

[root@node-a shell]# ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=52 time=7.47 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=52 time=7.32 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=52 time=7.30 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=52 time=7.32 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=5 ttl=52 time=7.33 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=6 ttl=52 time=7.30 ms


二、后台进程:执行放在后台,不影响终端操作,任务后台继续

命令:

command &   # 未启动的command放到后台运行
jobs # 查看后台进程列表
ctrl+z # 暂停进程
bg  # 将程序放入后台运行,与 & 一样
fg  # 将后台任务放入前台执行


实验:nc网络安全工具


安装:

yum install -y nc


执行命令:

nc -lp 8000 本机开放8000端口
-l : listen 
-p  : port


开放系统中任意一个未被占用的端口,执行命令后,当前终端一直处于被占用状态

将命令放入后台执行

[root@node-a ~]# nc -lp 8000 &
[1] 22542
1 表示正在当前终端后台运行的任务
22542 表示所产生的进程PID


jobs -l 命令查看当前终端正在后台进行的进程任务,-l选项可以同时显示该进程对应的PID

[root@node-a ~]# jobs -l
[1]+ 22542 Running                 nc -lp 8000 &
1 表示该进程在后台的任务编号
+ 表示这是默认最近的一个后台命令,若当前终端没有后台进程,将不会显示任何信息


fg命令 将后台执行的命令再次转到前台,1表示指定后台进程对应的任务编号,结束进程使用ctrl+c强制停止

[root@node-a ~]# fg 1
nc -lp 8000
^C


除了使用在命令后面加&符号之外,还可以按ctrl+z 组合键将一个进程转入后台,不过这种方式转入后台的进程将处于停止状态

[root@node-a ~]# nc -lp 8000
^Z
[1]+  Stopped                 nc -lp 8000


进程已处于停止状态

[root@node-a ~]# jobs -l
[1]+ 23480 Stopped                 nc -lp 8000


bg 命令可以使被挂起的进程在后台继续执行

[root@node-a ~]# bg 1
[1]+ nc -lp 8000 &

[root@node-a ~]# jobs -l
[1]+ 23480 Running                 nc -lp 8000 &

三、终止进程执行

前台运行的进程,可以通过ctrl+c终止

后台运行的进程,先通过fg命令将其调入前台,然后通过ctrl+c终止


如果需要终止一个其他终端或者系统后台进程,那么借助kill命令

kill命令终止进程,需要使用PID作为参数

[root@node-a ~]# jobs -l
[1]+ 23480 Running                 nc -lp 8000 &
[root@node-a ~]# kill 23480
[root@node-a ~]# jobs -l
[1]+ 23480 Terminated              nc -lp 8000


kill命令 可以发出多种信号,每个信号都有编号,其中默认15号信号

-9号信号SIGKILL,强行将进程终止,一般情况下不要轻易使用-9选项 可能会导致程序部分数据丢失


所谓坚持,就是从种子种下到开花结果需要等待的时间。

评论

^