linux进程管理之作业控制

本文详细介绍了Linux shell中的作业控制功能,包括如何在前台和后台运行命令,挂起、恢复和终止进程的方法。通过具体示例展示了如何利用作业控制提高shell会话效率,以及在断网情况下如何通过screen命令管理远程主机上的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

作业控制 jobs


====================================================================================

作业控制是一个命令行功能,允许一个shell 实例来运行和管理多个命令。
如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令。


foreground, background, and controlling terminal

foreground: 前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
background: 后台进程没有控制终端,它不需要终端的交互。


示例1:
[root@localhost ~]# sleep 3000 & //运行程序(时),让其在后台执行
[root@localhost ~]# sleep 4000 //^Z,将前台的程序挂起(暂停)到后台
[2]+ Stopped sleep 4000

[root@localhost ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
root 8896 0.0 0.0 100900 556 pts/0 T 12:13 0:00 sleep 4000

查看被挂起的进程( jobs )
[root@localhost ~]# jobs //查看后台作业
[1]- Running sleep 3000 &
[2]+ Stopped sleep 4000

恢复到前台继续运行( fg )
恢复到后台继续运行( bg)
[root@localhost ~]# bg %2 //让作业2在后台运行
[root@localhost ~]# fg %1 //将作业1调回到前台

[root@localhost ~]# kill %1 //kill 1,终止PID为1的进程

[root@localhost ~]# (while :; do date; sleep 2; done) & //进程在后台运行,但输出依然在当前终端

[root@localhost ~]# (while :; do date; sleep 2; done) &>/dev/null &


示例2:如何管理远程主机
[root@localhost ~]# ssh 172.16.50.240
[root@www ~]# yum -y install screen
[root@www ~]# screen -S install_apache

==断网后,重新连接==
[root@www ~]# screen -list
There are screens on:
28958.install_nginx (Detached)
29013.install_apache (Detached)
2 Sockets in /var/run/screen/S-root.

[root@www ~]# screen -r 29013

转载于:https://www.cnblogs.com/anttech/p/10597638.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值