質問: systemdのシャットダウン時に他のすべての前にスクリプトを実行するにはどうすればよいですか? 注:簡単に作成された質問は下部にあります。ファイルを外部usbドライブにバックアップするスクリプトがあります。作成した新しいデータの量によっては、実行にしばらく時間がかかる場合があります。システムをシャットダウンするたびに自動的に実行したい。fedora 23を最新のアップデート(systemd)で使用しています。私はいくつかの方法でこれを達成しようとしましたが、それを機能させることができませんでした。stopexecを使用した長時間実行プロセス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 systemctl enable autobackup.serviceとsystemctl start autobackup.service。ブートログの一部(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. 間を短くしたわけではないことに注意してください。スクリプトが開始する直前に/ mnt/backupが実際にアンマウントされました。shutdown.targetの前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 出力は基本的に同じです。問題問題は、両方の場合にsystemdが他のすべてのシャットダウンスクリプトと並行してスクリプトを開始することだと思います。これにより、backupがアンマウントされ、パイプインフラストラクチャが非アクティブになります(アンマウントが十分に高速でない場合に、別のエラーが発生することがあります)。質問最初にシャットダウン時にスクリプトを開始し、スクリプトが終了するまで待ってから、残りのシャットダウンスクリプト/ターゲット/ユニット/その他を開始するようにsystemdにどのように教えることができますか?
回答: わかった!解決策stopexecを使用した長時間実行プロセスを変更し、次のように変更します。autobackup.service:[unit] description=slow backup script requiresmountsfor=/mnt/backup /home [service] execstop=/etc/systemd/system/do_backup.sh type=oneshot remainafterexit=yes [install] wantedby=multi-user.target 次の行に注意してください。requiresmountsfor=/mnt/backup /home このように期待どおりに動作します。