我正在使用日志轮换来轮换我正在运行的守护程序(Web 服务)的日志。日志轮换如下:
/var/log/deamon/error.log {
daily
rotate 20
compress
delaycompress
missingok
notifempty
create 644 uwsgi uwsgi
postrotate
/etc/init.d/deamon stop
/etc/init.d/deamon start
endscript
}
Run Code Online (Sandbox Code Playgroud)
该/etc/init.d/deamon stop
工作正常,但它从未开始备份。有两个问题之一:要么我得到一个权限被拒绝的错误(可能不是因为我也会得到它停止)。或者启动部分失败。我需要以 root 身份启动服务,因为出于权限考虑,我需要设置 UID 和 GID。即使我设置了-rwxrwxrwx
它的权限也会给我这个错误:unable to set gid to 1001 (Operation not permitted)
我的问题是如何将 logrotate 设置为以不同的用户(即 root)运行或允许旋转设置 gid。
这是我的 /etc/init.d/deamon
#!/bin/bash
daemon=/venv/deamon_django18/bin/uwsgi
pid=/var/run/uwsgi/deamon.pid
args="--ini /etc/uwsgi/deamon.ini --pidfile $pid"
case "$1" in
start)
echo "Starting uwsgi"
start-stop-daemon -u uwsgi -g uwsgi -p $pid --start --exec $daemon -- $args
;;
stop)
echo "Stopping script uwsgi"
start-stop-daemon --signal INT -u uwsgi -g uwsgi -p $pid --stop $daemon -- $args
;;
reload)
echo "Reloading conf"
kill -HUP $(cat $pid)
;;
*)
echo "Usage: /etc/init.d/uwsgi {start|stop|reload}"
exit 1
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
小智 6
为了在 logrotate 中使用不同的用户,您可以指定“su”选项:
/home/ubuntu/log/*.log {
su ubuntu ubuntu
rotate 5
daily
compress
missingok
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17511 次 |
最近记录: |