我试图nohup
像这样调用一个函数:
function1(){
while true
do
echo "function1"
sleep 1
done
}
nohup function1 &
# ...... some other code
Run Code Online (Sandbox Code Playgroud)
但可能是看不到的功能nohup
,我得到这个错误:
nohup: failed to run command `function1' : No such file or dictionary
Run Code Online (Sandbox Code Playgroud)
我不想为我的函数创建新的sh文件.我怎样才能解决这个问题?
我有一些打印日志消息的python代码.在命令行运行时,使用utf-8就可以了.包含特殊字符的日志消息打印正常.但是,当在nohup下在后台运行时,它会在utf-8字符上进行barfs.
nohup python2.7 myProgram.py &
Run Code Online (Sandbox Code Playgroud)
我看到的错误是通常的"尝试在ascii中编码utf"错误:
UnicodeEncodeError:'ascii'编解码器无法对位置71中的字符u'\ u2013'进行编码:序数不在范围内(128)
我认为这是因为nohup向python发出信号,表示它没有正常的终端,因此默认为ascii.是否有任何方法可以告诉nohup在启用utf-8的情况下运行还是设置它以便utf-8字符在后台运行nohup时不会导致崩溃?
如何运行一个命令nohup
,使两者的输出和错误保存到nohup.out
?默认情况下,仅保存stdout并丢弃stderr.
我希望我的Terraform配置通过调用命令来配置服务器并在最后启动服务并继续运行它.我尝试使用nohup和屏幕使用remote-exec:
nohup的:
provisioner "remote-exec" {
inline = "nohup sudo command &"
}
Run Code Online (Sandbox Code Playgroud)
屏幕:
provisioner "remote-exec" {
inline = "screen -d -m sudo command"
}
Run Code Online (Sandbox Code Playgroud)
我通过手动登录来检查命令是否正在运行.但他们没有保持流程运行.如果我手动尝试这些命令并且使用ssh调用它们也可以.
如何在返回控制流时使用Terraform配置来启动命令并使其保持运行?
我有一个python脚本,practice_one.py
我希望它在Ubuntu Linux中永远运行,并具有以下内容:
while True:
# Code
Run Code Online (Sandbox Code Playgroud)
我尝试了nohup python practice_one.py &
但得到了消息nohup: ignoring input and appending output to ‘nohup.out’
.
然后当我按下回车键时,输出另一条消息: [1]+ Exit nohup python practice_one.py
怎么会自动退出?我能做错什么?
编辑
尝试:
nohup python practice_one.py </dev/null &>/dev/null &
并获得[1] 61122
然后当我按回车键我有[1]+ Exit nohup python practice_one.py </dev/null &>/dev/null &
它曾经工作但现在退出..现在可能是什么问题?
我想知道为什么我在Bash shell的后台进程中看到了不同的行为
案例1:使用Putty(SSH)登录Unix服务器
它给了我工作号码.现在我通过点击putty窗口中的x来杀死我的会话现在打开另一个会话并尝试查找进程...该进程已经死亡.
案例2:案例1:使用Putty(SSH)登录Unix服务器默认情况下,它使用csh shell
这里的Diff是..而不是直接执行sleep命令我将sleep命令存储在文件中并执行文件.
现在我通过点击putty窗口中的x来杀死我的会话现在打开另一个会话并尝试查找进程...过程仍然存在
不知道为什么会这样.我认为我需要在bash中使用,即使在注销后也要运行该过程.
在父进程id中看到一个差异.在第二种情况下,sleep 2000的父进程id变为1.看起来只要mysleep.sh的进程死了,内核就将父进程分配给1.
我试图在后台运行长时间运行的任务,而无需再进行登录,并在终端返回一个提示,但我这样做的时候,任务似乎进入到了后台,但我的提示不变得可用,除非我命中控制+ c.我想运行任务,然后回复我的提示.
[staging@php-pos-web ~]$ nohup php test.php > test.txt &
[1] 27251
[staging@php-pos-web ~]$ nohup: ignoring input and redirecting stderr to stdout
Run Code Online (Sandbox Code Playgroud) 我有一个名为mandacalc的大脚本,我想总是使用nohup命令运行.如果我从命令行调用它:
nohup mandacalc &
Run Code Online (Sandbox Code Playgroud)
一切都很快.但是,如果我尝试在命令中包含nohup,那么每次执行它时我都不需要输入它,我收到一条错误消息.
到目前为止,我试过这些选项:
nohup (
command1
....
commandn
exit 0
)
Run Code Online (Sandbox Code Playgroud)
并且:
nohup bash -c "
command1
....
commandn
exit 0
" # and also with single quotes.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只收到错误消息,抱怨nohup命令的实现,或者脚本中使用的其他引用.
干杯.
我使用nohup从php应用程序运行命令(我有一个网页,发送POST请求到php服务器,在后台启动一个shell脚本).
就像这样
exec('nohup /home/user/test.sh > /home/user/test.log 2>&1 &')
Run Code Online (Sandbox Code Playgroud)
当我使用OS X Snow Leopard(OS X 10.6)时,这很好用.但是,最近我将我的MAC升级到OS X Yosemite(OS X 10.10),现在它不再起作用了.
在test.log中,我总是收到消息:nohup can't detach from console: no such file or directory
.
如果我只是直接在bash中运行相同的命令,它工作正常.我做了很多搜索,但似乎我找不到任何有用的问题.我只看到关于詹金斯的讨论,似乎他们也看到了类似的问题.
任何人都知道为什么它会与优胜美地开始失败?任何输入将不胜感激.
以下为什么不工作?
$ alias sayHello='/bin/echo "Hello world!"'
$ sayHello
Hello world!
$ nohup sayHello
nohup: appending output to `nohup.out'
nohup: cannot run command `sayHello': No such file or directory
Run Code Online (Sandbox Code Playgroud)
(我问这个问题的原因是因为我把我perl
和python
不同的perl/python二进制混淆了,这些二进制文件是为了我自己的目的而优化的;但是,如果我不提供perl/python二进制文件的完整路径,nohup会给我带来麻烦)