我使用 ssh 协议连接到远程服务器并启动此命令以便远程运行我的 python 脚本:
nohup python3.8 -u sab.py > log_15_09_2023.txt &
这很好用,因为如果我输入,top
我就可以看到我的脚本当前正在运行。
但是如果我输入
tail -f nohup.out
我得到:
tail:无法打开“nohup.out”进行读取:没有此文件或目录 tail:没有剩余文件
所以我尝试了tail -f ./nohup.out
但遇到了同样的错误。
如果我输入,pwd
我会得到/home/alex
;如果我打印,ls -i -l
我会得到:
total 92
3414135 -rw-rw-r-- 1 alex alex 25538 Sep 15 16:41 log_15_09_2023.txt
3409134 -rw-r--r-- 1 alex alex 522 Sep 13 17:15 requirements.txt
3414133 -rw-r--r-- 1 alex alex 9585 Sep 15 13:18 sab.py
3407895 drwxrwxr-x 7 alex alex 4096 Sep 13 17:04 venv
我错过了什么?
答案1
从man 1 nohup
[强调我的]:
[…]如果标准输出是终端,
nohup.out
则尽可能将输出附加到终端,$HOME/nohup.out
否则。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到 FILE,请使用nohup COMMAND > FILE
。
这意味着当标准输出是终端时,将使用默认文件名nohup.out
。 在您的例子中,它不是终端,而是名为 的常规文件log_15_09_2023.txt
。
通过重定向到log_15_09_2023.txt
您nohup
使用了这个确切的文件代替nohup.out
。您没有重定向标准错误,它是一个终端,因此nohup
自动将其重定向到标准输出,即也重定向到此文件。
你应该tail -f nohup.out
调用:
tail -f log_15_09_2023.txt
它会起作用,文件就在那里。