Linux的进程后台运行

当我们使用某些linux命令的时候,默认是前台执行,例如ping命令,当我们使用ping命令的时候,默认是在当前终端执行,但是这样的问题导致当我们占用这个终端的时候就无法再执行其他命令。因此 我们在使用命令的时候是否可以将命令在后台运行呢?

在linux中使用&符号可以使命令在后台运行 例如
在这里插入图片描述
可以看到在当前终端执行了ping 192.168.48.1后,虽说屏幕输出还在继续,但是我是可以敲回车控制终端的。
我们使用jobs查看当前后台运行的命令
例如:
[root@bridge-centos7 ~]# ping 192.168.48.1 &> /dev/null &
[1] 27478
[root@bridge-centos7 ~]#
[root@bridge-centos7 ~]#
[root@bridge-centos7 ~]# jobs
[1]+ Running ping 192.168.48.1 &>/dev/null &

使用CTRL+Z可以把前台运行的程序放到后台运行,但是会使得该进程终止
在这里插入图片描述
作业控制
fg [[%]JOB_NUM] 把指定的后台作业调回前台
bg [[%]JOB_NUM] 把送往后台的作业在后台继续运行
kill [%JOB_NUM] 终止指定的作业
-19 停止
-18 启动
这里的JOB_NUM是刚刚图片里面jobs查看的最前面方括号里面的数值

当我们在后台运行程序的时候可以运行多个进程
例如,我们可以同时ping 192.168.48.1 和192.168.48.2

在这里插入图片描述
另外,在后台运行的进程无法通过ctrl+c终止,如果要终止的话需要使用上面的kill命令

使用后台运行可以使得多进程并行
例如

方法1
cat all.sh
fi.sh&
f2.sh&
f3.sh&

方法2
(f1.sh&);(f2.sh&);(f3.sh&)

方法3
f1.sh&f2.sh&f3.sh&

下面是一个利用后台运行执行ping测的脚本

在这里插入图片描述
wait的作用是:
默认情况下后台执行的程序不会提示你什么时候执行结束了,当按回车后才会提示你
例如:
[root@bridge-centos7 ~]# sleep 10 &
[1] 31404
[root@bridge-centos7 ~]#
[1]+ Done sleep 10 ##这个显示是因为按了回车才显示,否则永远不显示的,如果不按回车,后台执行的不会自动退出

只有按了回车才会告诉你已经停止了

wait命令可以在后台执行完成后自动退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值