2016-07-29 58 views
1

我想直接將服務器日誌發送到s3存儲桶。如何在關機或重啓之前在服務器上運行腳本

我爲此創建了一個腳本,這將在一天內運行一次,現在我希望它在服務器重啓或關閉時運行。

爲此,我將此腳本保存在/etc/init.d目錄中,並在/etc/rc6/etc/rc0目錄中創建了一個符號鏈接。

爲什麼服務器重新啓動或關閉時不運行?

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服務類型:

nano /etc/systemd/system/stop.service 

[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 
相關問題