一般状况下,在 Linux 终端中运行命令时,咱们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,而且您也可使用输入设备与其终端进行交互。ide
当一条命令执行须要很长时间才能完成,而且想同时运行其余命令怎么办呢?日志
第一:启动新的 Shell 会话并在其中运行命令;code
后台进程是从终端启动并在后台运行,无需用户与其终端进行交互的进程及命令;进程
一、组合键及命令
以 httpd-2.2.17.tar.gz 压缩包为例,好比一个压缩包文件解压需在终端屏幕下解压很长时间,甚至要刷很长一段屏幕才能解压完毕,那么咱们能够按下Ctrl+Z组合键,即可以暂停运行并隐藏到后台,将会返回一个中止序号,此时进程时暂停的,并不会继续运行。it
输入bg命令便可继续将该任务在后台执行。class
输入fg + 序号命令便可让进程返回到前台执行。后台
执行过程当中,能够输入jobs命令来查看全部的后台任务了。终端
# tar -zxf httpd-2.2.17.tar.gz ## 解压 httpd 压缩包 ^Z ## 按下 Ctrl+Z 组合键暂停 [1]+ Stopped tar -zxf httpd-2.2.17.tar.gz # bg ## 输入 bg 命令,继续在后台运行 [1]+ tar -zxf httpd-2.2.17.tar.gz & # jobs ## 查看全部的后台任务 [1]+ Done tar -zxf httpd-2.2.17.tar.gz
二、&
在执行命令后加&,使其在终端后台运行。grep
# ./yum_install.sh &
执行完如上命令,yum脚本便在后台运行,虽然在后台运行了,但输出的内容仍是会在终端上进行显示的,那么咱们能够采用将执行后的命令输出结果重定向到文件中。方法
# ./yum_install.sh >> 202001141411out.txt 2>&1 &
将执行的结果重定向到202001141411out.txt文件中,2>&1将标准错误重定向到标准输出,判断yum脚本文件执行成功没成功,咱们只需查看202001141411out.txt文件便可;
若是出现脚本文件执行了一段时间,卡死,没法继续运行了,能够经过第一种方法:jobs命令
# jobs -l
或者使用ps命令
# ps -aux | grep yum_install.sh
三、nohup
&:可使命令在后台运行,当关闭控制台时,进程也将会被杀死,若是但愿关闭控制台后,进程依旧运行,这时则须要使用nohup。
nohup:no hang up,不挂起的意思。
在执行命令最前面使用nohup,当关闭控制台时,进程依旧会在后台继续运行。
# nohup ./yum_install.sh &
如上nohup执行方式,当判断该脚本是否执行完毕,可执行命令ps -aux | grep yum_install.sh查看;
除此以外,咱们能够将运行结果输出到nohup.log文件中,当没有指定输出重定向时,日志文件会默认输出到nohup.out文件;
# nohup ./yum_install.sh > nohup.log 2>&1 &
若是以为这篇文章对你有所帮助,麻烦点个在看、留言、转发,支持一波,感谢!
PS:对了,公众号最近新上线了一个赞扬自动回复的新功能,开个赞扬体验一下,赞扬以后你将会收到一条回复消息,来试试看!
本公众号所有博文已整理成一个目录,请在公众号后台回复「m」获取!