2016-07-29 13 views
1

サーバログをs3バケットに直接送信したい。シャットダウンまたは再起動する前にサーバ上でスクリプトを実行する方法

私はスクリプトを作成しました。これは1日に1回実行され、サーバーが再起動またはシャットダウンするときに実行されるようにしたいと考えています。

このため、このスクリプトを/etc/init.dディレクトリに保存し、/etc/rc6/etc/rc0というディレクトリにシンボリックリンクを作成しました。

サーバーが再起動またはシャットダウンしても実行されないのはなぜですか?

nano /etc/systemd/system/stop.service 

sudo tar -czvf otaaccess.tar.gz /var/log/nginx/access.log 
INSTANCE=$(cat /var/tmp/aws-mon/instance-id) 
sudo aws s3 cp /home/ec2-user/otaaccess.tar.gz s3://hubbleserver-logs/ota/access/`date +%Y-%m-%dT%H:%M`-$INSTANCE.log 
sudo truncate -s 0 /var/log/nginx/access.log 
sudo rm /home/ec2-user/otaaccess.tar.gz 

答えて

0

はsystemctlで、私はoneshotサービスタイプを使用します。

[Unit] 
Description=Stop service 

[Service] 
Type=oneshot 
ExecStop=myStopScript.sh 
User=administrator 

[Install] 
WantedBy=multi-user.target 

登録:

systemctl daemon-reload 
systemctl enable cleanstopvnc 
1

私は「秘密」私は、次のinitスクリプトで行ったようにロックファイルを作成することだと思います。ロックファイルが作成された後、システムが再起動された場合に備えて動作するはずです。

#!/bin/bash 
# Description: abc script 
# chkconfig: 3 99 01 

mylog="/var/log/abc.log" 

case "$1" in 
    start) 
    touch /var/lock/subsys/abc 
    ;; 
    stop) 
    echo "Before init 6" > $mylog 
    date >> $mylog 
    ;; 
esac 

----いくつかのコマンド-----

# chkconfig --add abc 
# chkconfig --list abc 
    abc    0:off 1:off 2:off 3:on 4:off 5:off 6:off 
関連する問題