如何在后台进程中将stderr和stdout重定向到/var/log目录?

2024-05-17 05:41:49 发布

您现在位置:Python中文网/ 问答频道 /正文

使用下面的命令,所有stderr和stdout重定向到/tmp/不锈钢日志它在后台进程中执行。在

python  sslocal -c /etc/shadowsocks.json  > /tmp/ss.log   2>&1 &

现在将stderr和stdout重定向到/var/log目录,如下所示。在

^{pr2}$

遇到权限问题。
我试了一下sudo tee,如下所示。在

python  sslocal -c /etc/shadowsocks.json  |sudo tee -a /var/log/ss.log   2>&1 &
python  sslocal -c /etc/shadowsocks.json  2>&1|sudo tee -a /var/log/ss.log  &
nohup python  sslocal -c /etc/shadowsocks.json  |sudo tee -a /var/log/ss.log   2>&1 &
nohup python  sslocal -c /etc/shadowsocks.json  2>&1|sudo tee -a /var/log/ss.log  &    

它们都遇到了另一个问题,命令不能在后台进程中运行,而是作为前台进程运行。在

如何在后台进程中将stderr和stdout重定向到/var/log目录?在


Tags: 命令logjson进程shadowsocksvarstderrstdout
3条回答

尽管您尝试使用bash重定向来重定向stdout/stderr,但我可以添加另一个替代方法:在代码中重定向

import sys
sys.stdout = open(stdout.log, 'w')
sys.stderr = open(stderr.log, 'w')

您只需在应用程序启动期间执行此代码,所有输出(stdout,和stderr)都将写入定义的日志文件。在

只需以root身份调用重定向:

sudo sh -c 'python  sslocal -c /etc/shadowsocks.json  > /var/log/ss.log   2>&1' &
sudo vi /etc/systemd/system/ss.service

[Unit]
Description=ss

[Service]
TimeoutStartSec=0
ExecStart=/bin/bash -c '/python sslocal -c /etc/ss.json > /var/log/ss.log 2>&1'

[Install]
WantedBy=multi-user.target

在编辑配置文件后启动它。在

^{pr2}$

1.ss作为服务运行,在重新启动时自动启动。
2.ss可以将日志写入/var/log/日志无权限问题。在

相关问题 更多 >