这里首先先介绍一下 ctrl+z bg fg jobs 命令
下面为了观察效果,test1.sh脚本不停的输出hello
ctrl + z ,会使一个正在运行的进程挂起(暂停)到后台,而且执行jobs可以查看到后台运行的程序和运行状态,注意任务号不是进程号,
要想查这个任务号对应的进程号用 ps 命令查看
如果要把已经挂起的任务放到后台运行,执行bg + 任务号,缺省表示最近一次挂起的任务,任务号后面有 + 号的
如果要把已经挂起的任务放到前台运行,执行 fg + 任务号,缺省表示最近一次挂起的任务
或者一个在后台运行的任务放回前台运行 ,也用此 fg 命令
如果对fg bg 缺省值看不懂的可以看下图, world.sh脚本是后挂起的,任务号是2 ,注意[2]后面有+号,表示最近一次挂起的
这时我们用 fg 放到前台运行,而且没有给任务号作为参数,默认被放到前台的进程是world.sh
如果要结束进程可以两种方法(此处)
1 运行jobs ,查看任务号num ,然后 kill %num
2 先用ps 命令找到进程号PID,然后kill
下面再来讲下nohup 和 &
让一个脚本或命令直接在后台运行,可以用&
[captain@Caphost shell]$ ./hello.sh & [1] 16058
但是当终端关闭时,这个进程依然会被结束,如果我们想要进程不收终端的影响,即使关闭了终端,进程仍然可以运行,那么就要用到nohup命令
1.用nohup命令,将hello.sh放到后台,关闭标准输入,终端不再能够接受任何输入(这里指的是标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件即使关闭终端,程序依然运行 。但是ctrl+c会中止运行
[captain@Caphost shell]$ nohup ./hello.sh nohup: ignoring input and appending output to ‘nohup.out’
2. nohup ./hello.sh & ,将hello.sh任务放到后台,而且可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件
即使关闭终端,程序依然运行
[captain@Caphost shell]$ nohup ./hello.sh & [1] 16539 [captain@Caphost shell]$ nohup: ignoring input and appending output to ‘nohup.out’ ls abc hello.log test10bak2 test11.c test3.c test6-2.c test7bak.c test9.c world.sh a.c hello.sh test10.c test1.log test4.c test6bak.c test7.c test.c a.out nohup.out test10.cbak test2.c test5.c test6.c test8.c world.log [captain@Caphost shell]$
参考 https://www.cnblogs.com/jinxiao-pu/p/9131057.html
https://www.cnblogs.com/kaituorensheng/p/3980334.html