标签: nohup

nohup 和 Enter 将停止该进程:为什么?

我的脚本需要 root 权限,我想在远程计算机上运行它,然后能够关闭我的本地计算机。

所以我做了: $ nohup sudo ./myScript arg1 &

...我总是这样做,但是在另一台机器上我总是 root,所以没有sudo. 由于某种原因现在它不起作用:

nohup sudo ./myScript.sh 1 &  //then I press enter twice
[8] 24264
me@my-laptop:~/myFolder$ nohup: ignoring input and appending output to `nohup.out'


[8]+  Stopped                 nohup sudo ./myScript.sh 1
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

bash terminal process nohup

5
推荐指数
1
解决办法
9283
查看次数

python脚本如何知道自己运行在nohup模式下?

我在想我的run.py脚本是否可以以两种不同的模式运行。当处于nohup模式时:nohup python run.py &,就像完整日志输出模式一样。但是在正常模式下python run.py,就像日志抑制模式一样。因此对于用户来说它将是整洁和清晰的。

所以我的问题:我的可运行 python 脚本如何知道自己在 nohup 模式或正常模式下运行?

python linux command-line args nohup

5
推荐指数
1
解决办法
1288
查看次数

fabric不能用nohup调用远程脚本

在远程服务器中,我有一个脚本test.sh,如:

#!/bin/bash
echo "I'm here!"
nohup sleep 100&
Run Code Online (Sandbox Code Playgroud)

从本地,我运行'fab runtest'来调用远程test.sh.

def runtest():
    run('xxxx/test.sh')
Run Code Online (Sandbox Code Playgroud)

我可以得到输出"我在这里!",但我无法在远程服务器中找到睡眠过程.我错过了什么?

谢谢!

python nohup fabric

4
推荐指数
1
解决办法
3808
查看次数

nohup和python没有错误消息?

我在Linux服务器上运行一个python脚本,其中包含nohup:

nohup python3 ./myscript.py > ./mylog.log &
Run Code Online (Sandbox Code Playgroud)

它工作,脚本写日志文件,但问题是python错误消息/抛出异常似乎没有写入日志文件.我怎么能实现这个目标?

这与stderr有关吗?(但是当我启动脚本时,它说:"nohup:将stderr重定向到stdout".)

这是一个长时间运行的脚本,过了一段时间,有时脚本因为某些问题而停止工作,并且缺少错误消息,我不知道为什么.问题总是在几天后发生,所以调试真的很麻烦.

编辑:它可能与flush有关吗?由于我自己的打印使用flush但可能python错误不会这样,一旦脚本中止它们就不会出现在文件中?

python debugging exception nohup stderr

4
推荐指数
1
解决办法
2840
查看次数

在nohup之后的工作-l

在我使用nohup启动它之后,如何监视仍在运行的作业(我猜是分离的?),退出服务器并重新登录?通常情况下,我jobs -l会查看正在运行的内容,但这显示为空白.

linux bash nohup

4
推荐指数
1
解决办法
1933
查看次数

什么是PowerShell中的'nohup'?

如何nohup在PowerShell中模拟unix命令的行为?那是nohup my-other-nonblocking-command.我注意到了这个Start-Job命令,但是语法对我来说有点不清楚.

powershell nohup

4
推荐指数
1
解决办法
5446
查看次数

在bash脚本的循环中使用nohup

我有一个bash脚本,包含一个子目录列表循环.在循环内我cd进入每个子目录,运行命令nohup然后cd退出.在下面的示例中,echo为了简单起见,我已将命令替换为可执行文件.

#!/bin/bash
dList=("dname1" "dname2" "dname3")
for d in $dList; do
    cd $d
    nohup echo $d &
    cd ..
done
Run Code Online (Sandbox Code Playgroud)

以上结果导致nohup在第一个循环期间挂起,输出如下:

$ ./script.sh
./dname1 
$ nohup: appending output to `nohup.out'
Run Code Online (Sandbox Code Playgroud)

脚本不会继续循环,要在命令行上再次键入,必须按回车键.好的,这是nohup在shell上使用它时的正常行为,但显然它对我的脚本不起作用.我怎样才能nohup简单地运行然后优雅地允许脚本继续?

我已经(不成功)尝试了nohup命令的变种,包括

nohup echo $d < /dev/null & 
Run Code Online (Sandbox Code Playgroud)

但这没有帮助.此外,我尝试包括

trap "" HUP
Run Code Online (Sandbox Code Playgroud)

在脚本的顶部,但这也没有帮助.请帮忙!

编辑:正如@a​​nubhava正确指出我的循环包含一个错误,导致脚本只使用数组中的第一个条目.这是更正后的版本.

#!/bin/bash
dList=("dname1" "dname2" "dname3")
for d in ${dList[@]}; do
    cd $d
    nohup echo $d &
    cd ..
done
Run Code Online (Sandbox Code Playgroud)

所以现在脚本实现了我想要的.但是,我们仍然从nohup那里得到令人讨厌的输出,这是我原来问题的一部分.

unix bash shell loops nohup

4
推荐指数
1
解决办法
3733
查看次数

即使在使用 sudo nohup 后,Amazon EC2 NodeJS 服务器也会在 2 天后自行停止

我在http://talkwithstranger.com/ 上运行我的应用程序,并将它部署在 AWS EC2 上。我用这个命令

sudo nohup node index.js &
Run Code Online (Sandbox Code Playgroud)

即使我关闭终端并退出我的 SSH,也要继续运行我的 Node JS 服务器。

但是,每次醒来2天后,我发现节点服务器本身会自动停止。我通过使用检查了正在运行的进程

ps -ef
Run Code Online (Sandbox Code Playgroud)

我的节点脚本不存在。

谷歌浏览器说未找到站点 DNS,因为 NodeJS Express 当然没有运行来提供我的 html 文件,但为什么它会自行停止?

是什么导致我的服务器在每 2 天后意外关闭?我必须nohup再次手动运行才能再次运行它。

nohup 是否有过期时间之类的?

process amazon-ec2 nohup node.js express

4
推荐指数
2
解决办法
4278
查看次数

如何将nohup输出重定向到指定文件?

我在SO上发现的其他示例中尝试的所有内容似乎均不起作用。我正在尝试使用nohup运行我的应用程序,但是将应用程序的输出附加到文件中。

我尝试了以下一些方法。似乎都不起作用。

nohup dotnet application.dll &> out.log &
nohup dotnet application.dll > out.log 2>&1 &
nohup dotnet application.dll > /opt/out.log &
Run Code Online (Sandbox Code Playgroud)

我总是收到类似

-bash: out.log: Permission denied
Run Code Online (Sandbox Code Playgroud)

我尝试使用sudo运行该应用程序,但它似乎仍然无法正常工作。


nohup dotnet application.dll &
Run Code Online (Sandbox Code Playgroud)

效果很好,但是它将输出定向到其他目录,例如 /home/ubuntu/nohup.out

我究竟做错了什么?

linux bash nohup

4
推荐指数
1
解决办法
3484
查看次数

保持节点在后台运行的最佳方法是什么 - nohup vs. forever vs. pm2?

我已经阅读了很多关于使用nohup,forever和pm2保持节点在后台运行的帖子.但我仍然不确定哪个是最佳选择,并希望得到一些指导.

背景 - 在使用Ubuntu版本16的Apache服务器上运行MEAN堆栈应用程序.App.js位置是/ var/www /.当我退出终端时,我正在使用永远使应用程序在后台运行.我明白,如果我使用nohup,命令就是

nohup node /var/www/<project_name>/app.js > stdout.txt 2> stderr.txt &
Run Code Online (Sandbox Code Playgroud)

我想要确保的是,无论1)我如何退出终端(通过键入exit或只是单击右上角的X)和2)部署应用程序的操作系统,没有后台服务将以某种方式终止当我退出终端时,这会破坏我的应用程序.为此,运行应用程序的最佳方法是什么?nohup,forever还是pm2?我也明白有些人永远偏爱pm2.pm2提供什么比永远不提供?

nohup node.js forever mean-stack pm2

4
推荐指数
1
解决办法
559
查看次数