首页 > 其他分享 >nohup nohup: ignoring input

nohup nohup: ignoring input

时间:2024-10-10 21:00:28浏览次数:14  
标签:centos ignoring sleep nohup time print input Recorder

nohup 是一个 Unix 和 Linux 命令,用于运行关闭时不会被终止的进程(即"不挂起"的进程)。当你看到 nohup: ignoring input 这个错误时,通常意味着你尝试使用 nohup 去运行一个需要交互式输入的命令【不是这个原因】。nohup 默认情况下会忽略任何输入,并将标准输入重定向到 /dev/null

解决方法:

  1. 如果你正在运行的命令确实需要交互式输入,你可以将输入重定向到某个文件,或者使用管道(pipe)将输入传递给命令。

  2. 如果你不需要命令的任何输入,确保你运行的命令不要期望任何交互式输入。

例如,如果你的命令是 mycommand < input.txt,而你希望 nohup 运行它,你可以简单地运行 nohup mycommand &,这样 nohup 就不会尝试从标准输入读取数据。如果你的命令需要从文件读取输入,可以使用 cat input.txt | nohup mycommand &

 

test.py
import time

while True:
    #time.sleep(3)
    print("pass ")

 

 

[root@VM-8-12-centos Recorder]# nohup python test.py > tes.txt 2>&1 &
[1] 11046

[root@VM-8-12-centos Recorder]# 
[root@VM-8-12-centos Recorder]# more tes.txt
nohup: ignoring input
pass 
pass 
pass 
pass 
pass 
pass 
pass 

 

import time

while True:
    time.sleep(3)
    print("pass ")

 

[root@VM-8-12-centos Recorder]# 
[root@VM-8-12-centos Recorder]# nohup python test.py > tes.txt 2>&1 &
[1] 13596

[root@VM-8-12-centos Recorder]# 
[root@VM-8-12-centos Recorder]# more tes.txt
nohup: ignoring input
[root@VM-8-12-centos Recorder]# 

 

[root@VM-8-12-centos Recorder]# cat > a.py
# script.py
import time 
print("Running in the background")
time.sleep(10)  # 休眠10秒
print("Finished sleeping")

[root@VM-8-12-centos Recorder]# nohup python a.py > a.txt 2>&1 &
[2] 20380


[root@VM-8-12-centos Recorder]# more a.txt
nohup: ignoring input

 [root@VM-8-12-centos Recorder]# more a.txt
nohup: ignoring input
Running in the background
Finished sleeping

 

time.sleep nohup: ignoring input

解释:

time.sleep 是 Python 中的一个函数,用于暂停程序的执行。nohup 是一个 Unix 命令,用于运行关闭时不会被挂起的(no hang up)程序。

当你在终端中运行一个脚本,并且脚本中有 time.sleep 函数,然后你使用 nohup 运行这个脚本并且重定向输出到一个文件时,你可能会看到 "nohup: ignoring input" 的消息。这是因为 nohup 默认忽略输入,即使是当运行的命令期望输入时。

解决方法:

如果你的脚本需要与用户交互(例如,需要从标准输入接收数据),那么你不应该使用 nohup。如果你的脚本不需要用户交互,那么你可以安全地使用 nohup,这时 "nohup: ignoring input" 的消息不是一个错误。

如果你需要运行一个需要用户交互的脚本,并且希望它在后台运行,可以考虑以下方案:

  1.  使用 screen (https://www.cnblogs.com/emanlee/p/3424635.html) 或 tmux 创建一个会话,在会话中运行你的脚本,然后离开会话。脚本将在后台运行,即使你的终端关闭,它也不会停止。

  2.  如果你只是想要脚本在后台运行,并且不需要与终端会话连接,可以修改你的脚本,让它不使用 time.sleep 来暂停,而是使用一个循环来管理时间间隔,并且使用 nohup 运行脚本,并重定向输入和输出。

例如:

nohup python your_script.py > output.log 2>&1 &

这将在后台运行 your_script.py,将标准输出和标准错误重定向到 output.log 文件,并且忽略输入。

 

 

import time
import threading

while True:
    event = threading.Event()
    print('...部分代码...')
    event.wait(5)
    print('...剩下的代码...')

 

[root@VM-8-12-centos Recorder]# nohup python test.py > tes.txt 2>&1 &
[1] 31788
[root@VM-8-12-centos Recorder]# more tes.txt
nohup: ignoring input

 

 

只有全部  time.sleep  都运行完了,才能开始输出内容到  tes.txt 文件中。

即使把print放到很靠前的位置,把time.sleep 放到最后一行。

如下:

# script.py
import time
 
print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(1)  # 休眠10秒

print("Running in the background")

print("Finished sleeping")

time.sleep(11)  # 休眠10秒

标签:centos,ignoring,sleep,nohup,time,print,input,Recorder
From: https://www.cnblogs.com/emanlee/p/18456400

相关文章

  • elementUI 的 input无法输入bug解决
    1、出现bug的原因    是因为数据层虽然改变了,但是并没有引起视图层的变化2、解决方案@input="forceUpdate($event)"//在input框上加输入事件forceUpdate(e){this.$forceUpdate()强制刷新}jeecg-boot框架前端写了个筛选组件:SearchBox.vue,测试人员发现输......