終了する前にgitコマンドを実行できません

終了する前にgitコマンドを実行できません

可能であれば、systemdこれを行うためにそれを使用したいと思います。これが私がこれまでにしたことです。

  1. fishファイルを準備、コミット、リポジトリにプッシュするスクリプトを作成しました。スクリプトを渡すことができますchmod u+x <script>.fish
  2. サービスユニットを作成しました。
  3. リロードsystemctl --user daemon-reloadして有効にしますsystemctl --user enable backup.service

これは魚のスクリプトです。

#!/usr/bin/fish

set note_dir /home/yjh/Documents/notes

cd $note_dir

set today (date "+(%A) %B-%d-%G %T")

git add . 
git commit -am $today
git push origin master

これはサービス単位ファイルです。

[Unit]
Description=Backup obsidian notes before shutdown
DefaultDependencies=no
After=network-online.target
Wants=network-online.target
Before=halt.target reboot.target shutdown.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=fish /home/yjh/scripts/backup.fish

[Install]
WantedBy=halt.target reboot.target shutdown.target

リンクを適用した後のサービス単位ファイルです。回答フレディが提供しました。この回答は次のリンクにリンクされています。もう一つの答えまた、これらの変更を適用しましたが、まだ機能しません。

スクリプトを2つの方法で手動で実行./<script>fishし、このようにsystemctlを介して実行し、systemctl --user start backup.service両方とも私のコードをgithubにプッシュできます。この特定のリポジトリにSSHを設定したため、githubにプッシュしようとするとパスワードやユーザー名の入力を求められません。

ベストアンサー1

簡単に説明するには、次の単純化されたバージョンを試してください。

[Unit]
Description=Backup obsidian notes before shutdown
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStop=fish /home/yjh/scripts/backup.fish

[Install]
WantedBy=default.target

ユーザーサービスとして実行すると、テストスクリプトは自動的に起動しません(非アクティブ(死)変える活動(終了))。最初はWantedBy=multi-user.target設置部分で使用しました。ただし、このターゲットは、halt.targetまたはなどのユーザーサービスを実行するためには使用できませんreboot.target。変えると変わりますWantedBy=default.targetSystemdサービスが開始されませんでした(WantedBy = multi-user.target)。

削除すると暗黙DefaultDependencies=noの依存関係が追加されConflicts=shutdown.targetます。Before=shutdown.targetsystemd.targetそしてsystemd.special#shutdown.target

シンボリックリンクを変更したら、サービスを編集して再度有効にします。

systemctl --user reenable backup.service

その後、再起動し、再びシャットダウンして動作することを確認します。

おすすめ記事