首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在后台进程中将stderr和stdout重定向到/var/log目录?

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

Stack Overflow用户
提问于 2017-04-19 01:27:48
回答 3查看 965关注 0票数 5

使用下面的命令,所有stderr和stdout都重定向到/tmp/ss.log,并在后台进程中执行。

代码语言:javascript
复制
python  sslocal -c /etc/shadowsocks.json  > /tmp/ss.log   2>&1 &

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

代码语言:javascript
复制
python  sslocal -c /etc/shadowsocks.json  > /var/log/ss.log   2>&1 &
bash: /var/log/ss.log: Permission denied  

它遇到了许可问题。

我试了一试,如下所示。

代码语言:javascript
复制
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目录?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-23 15:07:48

代码语言:javascript
复制
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

编辑配置文件后启动它。

代码语言:javascript
复制
sudo systemctl daemon-reload
sudo systemctl enable ss.service
sudo systemctl start ss.service
sudo systemctl status ss -l

1.ss作为服务运行,并在重新启动时自动启动。

2.ss可以在没有权限问题的情况下将日志写入/var/ log /ss.log。

票数 2
EN

Stack Overflow用户

发布于 2017-04-23 14:51:16

尽管尝试使用bash重定向重定向stdout / stderr,但我可能会添加另一种选择:在代码中重定向

代码语言:javascript
复制
import sys
sys.stdout = open(stdout.log, 'w')
sys.stderr = open(stderr.log, 'w')

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

票数 3
EN

Stack Overflow用户

发布于 2017-04-21 01:58:05

只需以根用户身份调用重定向:

代码语言:javascript
复制
sudo sh -c 'python  sslocal -c /etc/shadowsocks.json  > /var/log/ss.log   2>&1' &
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43484756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档