Not: Kısaca formüle edilmiş soru altta bulunabilir.
Dosyalarımı harici bir USB sürücüsüne yedekleyen bir komut dosyası var. Oluşturduğum yeni veri miktarına bağlı olarak, bu işlemin uygulanması biraz zaman alabilir. Sistemin her kapanışında otomatik olarak çalıştırmak istiyorum.
En son güncellemelerle (systemd) fedora 23 kullanıyorum.
Bunu birkaç şekilde başarmaya çalıştım, ama işe yaramadım.
StopExec ile uzun süren işlem
autobackup.service:
[Unit]
Description=Slow backup script
Requires=local-fs.target
[Service]
ExecStart=/bin/true
ExecStop=/etc/systemd/system/do_backup.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multiuser.target
İle etkinleştirdim systemctl enable autobackup.service
ve ile başladım systemctl start autobackup.service
.
Önyükleme günlüğümün bir parçası ( journalctl -b-1
):
Dez 22 17:45:27 localhost systemd[1]: Unmounted /mnt/BACKUP.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At subvol /home/BACKUP.2015_12_22-17_45_25
Dez 22 17:45:27 localhost do_backup.sh[4296]: ERROR: parent subvol is not reachable from inside the root subvol.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At snapshot BACKUP.2015_12_22-17_45_25
Dez 22 17:45:27 localhost do_backup.sh[4296]: ERROR: failed to dump stream. Broken pipe
Dez 22 17:45:27 localhost systemd[1]: autobackup.service: Control process exited, code=exited status=1
Dez 22 17:45:27 localhost systemd[1]: Stopped Slow backup script.
Dez 22 17:45:27 localhost systemd[1]: autobackup.service: Unit entered failed state.
Ben arasında bir şey kısaltmak olmadığını unutmayın, komut dosyası başlamadan hemen önce gerçekten monte / mnt / BACKUP, komik tesadüf ..
Kapanmadan önce. Hedef
autobackup.service:
[Unit]
Description=Slow backup script
DefaultDependencies=no
Before=shutdown.target
[Service]
ExecStart=/etc/systemd/system/do_backup.sh
Type=oneshot
systemctl edit shutdown.target
[Unit]
Requires=autobackup.service
Çıktı temelde aynıdır.
Sorun
Bence sistemd, her iki durumda da BACKUP bağlantısını kesen ve boru altyapısını devre dışı bırakan diğer kapatma komut dosyalarına paralel olarak benim betiğimi başlatır.
Soru
Systemd'ye komut dosyasını ilk olarak kapatma sırasında başlatmayı, çıkana kadar beklemeyi ve ardından geri kalan kapatma komut dosyalarını / hedefleri / birimleri / herhangi bir şekilde başlatmayı nasıl öğretebilirim?