特定のユーザーでlogrotateを実行する

特定のユーザーでlogrotateを実行する

私は実行中のデーモン(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
}

うまくいきます/etc/init.d/deamon stopが、バックアップは開始されません。 2つの問題の1つがあります。権限拒否エラーが発生します(おそらく停止したために発生しなかった可能性があります)。または、先頭が失敗します。権限の問題でUID、GIDを設定し、rootとしてサービスを開始する必要があります。権限を設定しても、-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

ベストアンサー1

logrotateで他のユーザーを使用するには、「su」オプションを指定できます。

/home/ubuntu/log/*.log {
  su ubuntu ubuntu
  rotate 5
  daily
  compress
  missingok
}

おすすめ記事