Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何找到自己执行的后台工作_Linux_Ubuntu - Fatal编程技术网

Linux 如何找到自己执行的后台工作

Linux 如何找到自己执行的后台工作,linux,ubuntu,Linux,Ubuntu,我们可以使用&使bash在后台执行,例如,livereload&,php-S localhost:8000&,但是如果我离开终端忘记终止该过程,它将始终在那里,直到重新启动,我可以使用命令作业检查我执行的bash,但是,如果我打开一个新的终端或再次登录,作业-l将为空,下次登录时谁来查找它。如果使用&,这会将进程置于后台;但是,该进程仍然附加到该特定终端(更具体地说,是执行该命令的活动shell)。当您退出该终端(或注销该shell)时,进程将被终止。(见:) 退出该shell时进程不会被终止的

我们可以使用
&
使bash在后台执行,例如,
livereload&
php-S localhost:8000&
,但是如果我离开终端忘记终止该过程,它将始终在那里,直到重新启动,我可以使用命令
作业检查我执行的bash,但是,如果我打开一个新的终端或再次登录,
作业-l
将为空,下次登录时谁来查找它。

如果使用
&
,这会将进程置于后台;但是,该进程仍然附加到该特定终端(更具体地说,是执行该命令的活动shell)。当您退出该终端(或注销该shell)时,进程将被终止。(见:)

退出该shell时进程不会被终止的情况是,该进程派生了一个子进程,而该子进程现在由init(PPID 1)拥有。
livereload&
可能就是这种情况

您还可以将当前在前台运行的进程放置到后台,方法是点击
Ctrl-Z
,将您带回shell,同时暂停(而不是终止)进程,然后键入
bg
,然后在后台继续执行该进程

当您运行
&
,或者使用
Ctrl-z
bg
将进程移到后台时,您可以通过键入
fg
将其移回前台。此时,您可以使用
Ctrl-c
杀死它

不过,一般来说,要查找已分离的正在运行的进程,可以使用

ps -f | grep <name of the command> | grep -v grep

这一行程序的工作方式是,它是
grep
s您的历史记录,它的结尾是
&
,例如

现在,您甚至可以再次将其导入
xargs
,以终止这些进程(如果您确信它们是正确的)。如果要验证,可以运行

mgr@tesla:~$ ps -p 90448 -o comm=
sleep


如果使用
&
,则会将流程置于后台;但是,该进程仍然附加到该特定终端(更具体地说,是执行该命令的活动shell)。当您退出该终端(或注销该shell)时,进程将被终止。(见:)

退出该shell时进程不会被终止的情况是,该进程派生了一个子进程,而该子进程现在由init(PPID 1)拥有。
livereload&
可能就是这种情况

您还可以将当前在前台运行的进程放置到后台,方法是点击
Ctrl-Z
,将您带回shell,同时暂停(而不是终止)进程,然后键入
bg
,然后在后台继续执行该进程

当您运行
&
,或者使用
Ctrl-z
bg
将进程移到后台时,您可以通过键入
fg
将其移回前台。此时,您可以使用
Ctrl-c
杀死它

不过,一般来说,要查找已分离的正在运行的进程,可以使用

ps -f | grep <name of the command> | grep -v grep

这一行程序的工作方式是,它是
grep
s您的历史记录,它的结尾是
&
,例如

现在,您甚至可以再次将其导入
xargs
,以终止这些进程(如果您确信它们是正确的)。如果要验证,可以运行

mgr@tesla:~$ ps -p 90448 -o comm=
sleep


我确信我运行了livereload或其他东西,我仍然可以在使用
ps aux | grep livereload
再次登录时找到它,它没有关闭,我知道
ps
使用
grep
可以找到它,但是我正在寻找像jobs可以立即显示这样的东西,以防我忘记以前运行过什么这可能很有用:
jobs
只显示从同一个shell开始并属于同一个shell的后台命令。是的,我知道,这就是我在这里要问的问题。我要强调的是,
livereload
可能是这里的例外,而不是规则。当您使用
&
在后台放置某个内容时,它将连接到该shell会话,并在您退出该特定shell时被终止。在livereload的案例中,只需对您的历史记录进行grep,并查找您在后台放置流程的案例,然后在
ps aux
ps-f
中对其进行grep即可。如果您有任何其他示例,其中流程通过简单的
&
分离,请提供它们。否则,这听起来像是
livereload
-这里的特定案例。我确信我运行了livereload或其他东西,当使用
ps aux | grep livereload
再次登录时,我仍然可以找到它,它没有关闭,我知道
ps
使用
grep
可以找到它,但是我正在寻找像jobs可以立即显示这样的东西,以防我忘记以前运行过什么这可能很有用:
jobs
只显示从同一个shell开始并属于同一个shell的后台命令。是的,我知道,这就是我在这里要问的问题。我要强调的是,
livereload
可能是这里的例外,而不是规则。当您使用
&
在后台放置某个内容时,它将连接到该shell会话,并在您退出该特定shell时被终止。在livereload的案例中,只需对您的历史记录进行grep,并查找您在后台放置流程的案例,然后在
ps aux
ps-f
中对其进行grep即可。如果您有任何其他示例,其中流程通过简单的
&
分离,请提供它们。否则,这听起来像是一个
livereload
特定的案例。
898 my_script &   # <----- you'll only see lines like this
899 ls
900 sleep 10000 & # <----- you'll only see lines like this
901 pwd
mgr@tesla:~$ ps aux | grep sleep
mgr             91040   0.0  0.0  2434836    756 s002  S+    9:37AM   0:00.00 grep sleep
mgr             90448   0.0  0.0  2434820    340 s002  S     9:24AM   0:00.00 sleep 100000
mgr@tesla:~$ history | grep "&$" | sed "s/&//g" | sed "s/^[ \t]*[0-9]*//g" | sed "s/^[ \t]*//g" | xargs pgrep
90448
mgr@tesla:~$ ps -p 90448 -o comm=
sleep
mgr@tesla:~$ ps aux | grep 90448 | grep -v grep
mgr             90448   0.0  0.0  2434820    340 s002  S     9:24AM   0:00.00 sleep 100000