linux - Ctrl + C 终止 "grunt watch",但杀死从同一个 bash 启动的 Atom 编辑器,为什么?

标签 linux bash shell atom-editor

我有这个名为 wsjs.sh 的脚本:

#!/bin/bash
WS=/home/user/wsjs
cd $WS
nohup atom . & 
gnome-terminal
grunt watch

如果我在 bash 中运行它:

./wsjs.sh

然后atom编辑器,gnome-terminal分别启动,当前bash显示:

user@ubuntu:~$ ./wsjs.pwd 
nohup: appending output to ‘nohup.out’
Running "watch" task
Waiting...

现在如果我按下 ctrl + cgrunt watch 退出,但原子编辑器也关闭了。

...这很奇怪。

我在 bash 中手动输入了每个命令,并且 atom 没有关闭。 我用 gedit 替换了 atom 并运行脚本,它没有关闭。

为什么 atom 被关闭了?谢谢!

最佳答案

这是因为在执行 shell 脚本时,它有一个进程 ID,而文件中执行的命令将有一个脚本文件的父进程 ID。 因此,在终止或 Ctl+C 脚本文件时,它也会终止子进程(在您的情况下

cd $WS
nohup atom . & 
gnome-terminal
grunt watch

) 在执行单个命令时具有独立的进程 ID。

希望你明白了。

关于linux - Ctrl + C 终止 "grunt watch",但杀死从同一个 bash 启动的 Atom 编辑器,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555662/

相关文章:

android - android中如何获取运行在用户空间的指定进程的调用栈?

linux - 将 bash 输出重定向到 bash 脚本中的文件

bash - 在 heredoc 部分设置变量

linux - tar 失败模式 : Not exiting on write fail

bash - 使用 GNU 拆分的错误数字后缀

c - 如果在单独的线程中关闭(2) 文件描述符,select(2) 会做什么?

c - 如何查找给定地址是在堆中还是在堆栈中

linux - 如何创建一个脚本来检查 ssh 是否正在运行,如果没有则重新启动它

shell - 将 Markdown 文件重新格式化为特定的代码风格

linux - 如何在 openhpi 安装期间解决 openssl 问题?