起動時に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