Todos os comandos no shell não-login interativo do debian9 (modo gráfico).
Eu quero fazer backup do mysql antes de reiniciar ou desligar.
who
test tty7 2018-02-01 18:26 (:0)
test@world:~$ pwd
/home/test
Agora, os três comandos a seguir podem fazer backup do banco de dados mysql.
USERNAME="xxxx"
PASSWORD="yyyy"
mysqldump -u root -p${PASSWORD} database > /home/test/wp.sql.bak
Crie um serviço em execução antes de reinicializar ou desligar.
vim /etc/systemd/system/test.service
[Unit]
Description=Run command at shutdown
Before=shutdown.target reboot.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/bash /home/test/test.sh
[Install]
WantedBy=multi-user.target
O arquivo test.sh.
cat /home/test/test.sh
USERNAME="xxxx"
PASSWORD="yyyy"
mysqldump -u root -p${PASSWORD} database > /home/test/wp.sql.bak
Ativar o serviço.
sudo systemctl enable test.service
sudo reboot
Agora faça o login no shell interativo não-login (modo gráfico).
sudo systemctl enable test.service
-- Logs begin at Thu 2018-02-01 18:26:04 HKT, end at Thu 2018-02-01 18:27:23 HKT. --
Feb 01 18:26:13 world systemd[1]: Starting Run command at shutdown...
Feb 01 18:26:18 world bash[480]: mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")"
Feb 01 18:26:19 world systemd[1]: test.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Feb 01 18:26:19 world systemd[1]: Failed to start Run command at shutdown.
Feb 01 18:26:19 world systemd[1]: test.service: Unit entered failed state.
Feb 01 18:26:19 world systemd[1]: test.service: Failed with result 'exit-code'
Os três comandos podem ser executados no terminal em vez de conter no test.service, como gravar um serviço de backup de todos os datadb do mysql ao reinicializar ou desligar?