2016-07-29 54 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 
相关问题