当前位置:首页 » 《随便一记》 » 正文

nohup & 让进程在后台运行的用法_coraline1991的专栏

2 人参与  2021年11月10日 13:03  分类 : 《随便一记》  评论

点击全文阅读


nohup & 让进程在后台运行的用法

准备一个可以长时间跑的脚本。

$ cat t.sh
#!/bin/bash
for i in $(seq 100)
do
sleep 1s
echo "i $i"
done

1.cmd

终端A运行/bin/bash t.sh
此时终端B可见t.sh进程
1.此时终端A Ctrl + C 或者 终端A 关闭
此时终端B不可见t.sh进程

2.cmd &

终端A运行/bin/bash t.sh &
此时终端B可见t.sh进程
1.终端A Ctrl + C
此时终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)
2.终端A 关闭
此时终端B不可见t.sh进程 ( 如果进程是adb logcat实时任务也如此)
3.终端A exit
此时终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)

3.bash并且 cmd &

终端A运行bash
终端A运行/bin/bash t.sh &
终端B可见t.sh进程
1.终端A Ctrl + C
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)
2.终端A 关闭不确认关闭
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)
3.终端A $ exit
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)

4.nohup cmd

终端A运行nohup /bin/bash t.sh
终端B可见t.sh进程
1.终端A Ctrl + C
终端B不可见t.sh进程 (如果进程是adb logcat实时任务也如此)
2.终端A 关闭,确认关闭
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)

5.bash并且nohup cmd

终端A运行bash
终端A 运行nohup /bin/bash t.sh
终端B可见t.sh进程
1.终端A Ctrl + C
终端B不可见t.sh进程 (如果进程是adb logcat实时任务也如此)
2.终端A 关闭,确认关闭
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)

6.nohup cmd &

终端A运行 nohup /bin/bash t.sh &
终端B可见t.sh进程
1.终端A Ctrl + C
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)
2.终端A exit
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)
3.终端A 关闭不确认关闭
终端B可见t.sh进程 (如果进程是adb logcat实时任务也如此)

可见:

  • nohup & '&‘区别为 Ctrl+ C可以杀死nohup的进程,杀不死’&'的进程,
  • nohup & '&‘区别为 关闭终端杀不死nohup的进程,可以杀死’&'的进程,
  • exit命令杀不死’&'的进程
  • 用bash新开一个进程后,和不开bash不一样, Ctrl + C | 关闭终端 | exit命令 都杀不死&的进程
  • 用bash新开一个进程后,和不开bash一样。
  • 对于普通进程t.sh和实时进程adb logcat,结果是一样的

所以让进程在后台跑可以以下方式

1. cmd &并且 exit
2. bash并且 cmd &并且 exit
3. bash并且 cmd &并且 关闭终端
4. nohup cmd并且 关闭终端
5. bash并且 nohup cmd并且 关闭终端
6. nohup cmd &并且 exit
7. nohup cmd &并且 关闭终端

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/30737.html

终端  进程  关闭  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1