linux 后台运行进程 fg bg ctrl+z nohup jobs
linux 后台运行进程 fg bg ctrl+z nohup jobs
https://blog.csdn.net/qq_40501104/article/details/78813717
20180717 zhuan
&、nohup、fg、bg、jobs、、ctrl+z、ctrl+c 命令
将正在控制台上运行的程序放到后台方法
ctrl+z 暂停进程,
然后jobs -l查看作业状态(为stopped),
然后执行bg,自动将第一个作业放后台继续运行(running).
fg为调到前台执行.
&
watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本
./task.py &可以把任务放置后台执行。
如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分.
nohup
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
nohup ./task.py & 即使终端断了也不终止运行
eg:
nohup ping www.baidu.com &
[1] 3059
nohup: appending output to `nohup.out'
ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.baidu.com
jobs (仅查看当前终端,如果之前ctrl+d退出终端了的话,是看不到的)
查看当前有多少在后台运行的命令
jobs -l选项可显示所有任务的PID.
jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
kill %jobnumber杀死后台运行程序(不可激活)
stop %jobnumber停止后台运行程序(可激活)
fg 后台调到前台
将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。
ctrl + z 暂停执行(程序临时暂停)
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
ctr+z前台把任务调到后台并挂起(stop)ctr+c终止前台任务
bg 恢复暂停的程序
将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
kill
法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:Ctrl+c

浙公网安备 33010602011771号