linux 远程nohup python xx.py&

代码示例
运行python程序 – my.py脚本

nohup python my.py >> my.log 2>&1 &
# 或者
nohup python my.py >> nohup.out 2>&1 &
# 或者
nohup python my.py &  # 这种写法和上面第二种写法等价

shell脚本类似 – tomcat.sh 并指定存放文件目录

nohup tomcat.sh > /dev/null 2>&1 &  

nohup指令

nohup指不断地运行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup。

nohup在不规定的情况下,所以输出内容会到nohup.out中

2>&1 错误内容重定向到标准输出

0 表示stdin标准输入,用户键盘输入的内容
1 表示stdout标准输出,输出到显示屏的内容
2 表示stderr标准错误,报错内容
2>&1 是一个整体,> 左右不能有空格,即将错误内容重定向输入到标准输出中去。

& 后台运行

&为后台运行
第一条代码,以python环境不间断的运行my.py这个脚本,并且将脚本输出的内容重定向输入my.log中(>>意为追加,如果用>会让其中的内容清空)
nohup python my.py >> my.log 2>&1 & 和 nohup python my.py 1 >> my.log 2>&1 & 相同,只是1(标准输入)被省略了,而后面的my.log 2>&1 又将2(错误内容)输入到标准输出,然后前面的标准输出又输入到my.log中,意思错误和标准内容都会输出到my.log中,其实代码可拆成两块。即:

nohup python my.py >> my.log 2>&1 &
# 等价于下面两行的内容
nohup python my.py 1>> my.log &
nohup python my.py 2>> my.log &

上面代码就是将错误和标准都输出到my.log,最初的代码只是简化了。
而加2>&1中的&是为了区别文件1和1(标准输出),假如为2>1,那么不就成了将错误内容输出到文件1中。
nohup tomcat.sh > /dev/null 2>&1 & 也是一样的,将错误和标准全部丢入/dev/null 中,全部销毁。
若不指定输出文件名,默认会在当前目录生成nphup.out文件
可能存在的问题
生成了nohup.out文件,但是内容始终是空的。

原因
python的输出又缓冲,导致nohup.out并不能够马上看到输出。

-u 参数,使得python不启用缓冲。

nohup python -u my.py >> nohup.out 2>&1 &

参考 https://blog.csdn.net/m0_38024592/article/details/103336210

https://blog.csdn.net/weixin_42840933/article/details/85780125

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值