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