Linux起動時にgitリポジトリを取得する方法

Linux起動時にgitリポジトリを取得する方法

起動時にgitリポジトリの最新コピーをインポートできるように、ラボにKali Linux 2021(zshを含む)マシンを置きたいです。手動でコマンドを正しく実行できますが、起動時にコマンドを実行することはできません。リポジトリはログインを必要としないパブリックリポジトリです。変更をキャンセルして最新のファイルをインポートするコマンドは次のとおりです。

/usr/bin/git -C /home/user/localrepo reset --hard main
/usr/bin/git -C /home/user/localrepo pull

.profile、にこれらのコマンドを追加し、crontabで再起動時に実行するスクリプトを生成しようとしましたが、.bash_login他の方法に関するアイデアがありませんでした。なぜ起動時に機能しないのかわかりません。/etc/network/if-up.d/script.sh/etc/profile.d/

どんな助けでも大変感謝します。

[編集] Kali VMが起動して約45秒後にロードされるゲートウェイがある仮想ラップ環境で実行されているため、この問題を解決する必要があることを追加する必要があります。これがスクリプトが実行されない理由かもしれません。これらのコメントを解決するためにエラーは発生しません。いわゆるgitログを確認しましたが、何も表示されません。

ベストアンサー1

systemdを使用して、次の方法でこれを実行できます。

# $HOME/.config/systemd/user/gitpull.service
[Unit]
Description=Pulling recent git repo

[Unit]
Type=oneshot
ExecStart=/usr/bin/git -C %h/localrepo reset --hard main
ExecStart=/usr/bin/git -C %h/localrepo pull

[Install]
WantedBy=default.target

それからテストしてみてください。

$ systemctl --user start gitpull

満足すれば、次のコマンドを使用してログイン時に実行することができます。

$ systemctl --user enable gitpull

メモ:

  • これは--userデフォルトバスの代わりにバスを使用します--system。これは、コンピュータの起動時ではなく、ユーザーがログインしたときに実行したいからです。また、ファイルをユーザー(ではなくroot)に所有させようとします。このコマンドをrootとして実行しないでくださいsystemctl
  • 本当にバスで実行したい場合は、そのセクションに追加する必要が--systemあります。User=[Unit]
  • サービスのactivating稼働中に表示され、deadサービスが完了すると表示できます。そんな性格だからType=oneshot見て慌てないでくださいdead
  • WantedBy=default.targetこれは、「ログイン」がTTYまたはSSHを介して行われても、このスクリプトが実行されることを意味します。 LightDMはこれをトリガーしますが、他のものも同じです。グラフィカルログインでのみこのタスクを実行したい場合に使用しますWantedBy=graphical-session.target
  • %hユーザーのホームディレクトリの略語です。
  • あなた-C %h/localrepoはに置き換えることができますWorkingDirectory=%h/localrepo

おすすめ記事