如何在关机或重启之前在服务器上运行脚本

时间:2016-07-29 06:04:22

标签: linux amazon-web-services

我想直接将服务器日志发送到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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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