之间有什么区别
$ nohup foo
Run Code Online (Sandbox Code Playgroud)
和
$ foo &
Run Code Online (Sandbox Code Playgroud)
和
$ foo &
$ disown
Run Code Online (Sandbox Code Playgroud) 有时我在 gnome-terminal 中运行一个应用程序,但后来我突然不得不重新启动 gnome 或其他东西。我想这个问题的答案也很有用,然后我想在发生某些事情的地方与 SSH 断开连接。
Gnome 的终端树如下所示:
gnome-terminal
bash
some-boring-process
Run Code Online (Sandbox Code Playgroud)
我可以bash从gnome-terminal(或some-boring-process从 bash分离并将其输出重定向到某个地方)吗?如果我只是杀死gnome-terminal,bash将被杀死以将其所有子进程
我知道我可以附加&到一个命令以在后台运行该进程。
我正在 SSH 进入 Ubuntu 12.04 框并运行 python 程序$python program.py &- 但是当我关闭终端窗口时,我收到一条消息,说关闭终端将终止正在运行的进程。
为什么是这样?我正在使用&符号在后台运行该进程。无论我是否通过 SSH 连接,我怎样才能让它运行?
在 Linux 中。假设我想运行一个命令,它花费的时间太长。我只是想确保它完成了。如何?
可能的重复:
如何在不终止其中运行的命令的情况下关闭终端?
我有一个运行 Debian Squeeze 的非常低端的“服务器”,我偶尔会通过 ssh 连接到它。系统往往很慢,例如运行apt-cache search可能需要半分钟。有时我发现我迫不及待地等待一个过程完成(我在我的笔记本电脑上,需要去某个地方)。
如果我最初使用nohup或 inside开始该过程screen,这将没有问题。但是,尽管我已注销,但如何让已经在运行的进程继续运行?
尝试在这里编写一个 shell 脚本,它不断测试我的服务器并在它出现故障时给我发送电子邮件。
问题是,当我从 ssh 连接注销时,尽管&在命令末尾运行它,例如./stest01.sh &,它会自动落入 else 并不间断地向我发送邮件,直到我再次登录并杀死它。
#!/bin/bash
while true; do
date > sdown.txt ;
cp /dev/null pingop.txt ;
ping -i 1 -c 1 -W 1 myserver.net > pingop.txt &
sleep 1 ;
if
grep "64 bytes" pingop.txt ;
then
:
else
mutt -s "Server Down!" myemail@address.com < sdown.txt ;
sleep 10 ;
fi
done
Run Code Online (Sandbox Code Playgroud) 我喜欢从终端启动 GUI 程序,例如emacs myfile.txt. 但是这样做会使该进程打开一个终端窗口,所以现在有两个窗口供我跟踪。如果我关闭终端窗口,GUI 程序也会关闭。
我知道我可以运行exec cmd,cmd我试图运行的命令在哪里,并在程序完成后关闭终端窗口。但是我想在命令启动后关闭终端窗口。有没有办法做到这一点?
可能的重复:
如何在不终止其中运行的命令的情况下关闭终端?
如何从终端启动 GUI 应用程序(例如 gedit)并一步将其从那里分离?
可能的重复:
如何在不终止其中运行的命令的情况下关闭终端?
如果我打开一个终端模拟器,输入firefox &然后关闭终端,它启动的进程 -Firefox- 会被杀死,因为它是它的子进程。
我怎样才能防止这种行为?
我必须在大学的服务器上运行一些测试。我可以从办公室的桌面 ssh 访问服务器。我想在服务器上启动一个 python 脚本,该脚本将在周末运行多个测试。
办公室的桌面将在周末进入待机状态,因此即使 SSH 会话终止,该进程也必须继续在服务器上运行。
我知道nohup和screen和tmux,在这样的问题描述:
我现在正在做的是:
ssh username@servertmuxpython3 run_my_tests.py -> 这个脚本做了一堆subprocess.check_output其他脚本,这些脚本本身会启动一些 Java 进程。tmux attach我重新获得仍然运行良好的 tmux 会话,没有任何错误。我一直检查这个几分钟,测试运行良好。在此之后,如果我通过 SSH 登录到服务器,我确实能够重新连接到正在运行的tmux会话,但是我看到的是:
Traceback (most recent call last):
File "run_my_examples.py", line 70, in <module>
File "run_my_examples.py", line 62, in run_cmd_aggr
File "run_my_examples.py", line 41, in run_cmd …Run Code Online (Sandbox Code Playgroud) 虽然我总是登录 CentOS 服务器进行模拟,但它让我想到:
为什么即使我的会话关闭,我也不能继续运行模拟?
我知道当会话结束或用户退出时,
会话生成的任何进程也将终止。
有没有办法让进程自己继续运行
即使会话已关闭?
-- 一个没有太多 Unix 背景的用户提出的一个愚蠢的问题:)
terminal ×4
shell ×3
bash ×2
job-control ×2
nohup ×2
process ×2
ssh ×2
afs ×1
bourne-shell ×1
command-line ×1
disown ×1
exit ×1
grep ×1
kerberos ×1
kill ×1
linux ×1
login ×1
logout ×1
permissions ×1
ping ×1
processes ×1
session ×1
shell-script ×1
tmux ×1