最近想要写一个脚本挂载在云服务器上,试着了解了一下linux下如何使用nohup挂载python脚本。
举个简单的例子:
先在linux下建立一个test.py文件,将代码写入
import time
def test():
while True:
with open('log.txt','a') as f:
f.write('写入数据,')
print('写入数据')
time.sleep(3)
if __name__ == '__main__':
test()
然后输入如下口令
nohup python3 文件路径 params1 > nohup.out 2>&1 &
这里要注意脚本的路径和输出的文件名,如果没有指定输出文件的话,默认是nohup.out,这里我把输出打印到一个txt文件。
nohup python3 /home/test/test.py params1 > log.txt 2>&1 &
单使用这个语句要等一段时间才能看到输出,因为输出有缓冲,导致nohup.out不能够马上看到输出。nohup提供了一个参数 -u 可以不启用缓冲
nohup python3 -u /home/test/test.py params1 > log.txt 2>&1 &
执行命令后可以输入jobs -l
查看是否有进程
这样的话表示脚本已经在后台运行了,可以进入log.txt查看是否有写入数据
这里的示例脚本只是一个简单代码,你也可以在代码中自己定义何时结束函数执行(如if…break),nohup也会结束进程。
也可以手动强制结束进程
jobs -l
查看正在执行的进程号
kill -9 进程号
强制结束进程