起動ファイルで時間がかかるコマンドラインを処理する方法は?

起動ファイルで時間がかかるコマンドラインを処理する方法は?

起動時に一度だけ自動的に実行したいコマンドがあります。私が見つけた解決策は、ログインシェルセッションの開始ファイルに入れることでした。~/.profile問題は、このコマンドが時間がかかり、初期化に多くの遅延が発生することです。

どうやって解決しますか?rcloneGoogleドライブのデータが必要です。

ベストアンサー1

説明は、シェルの初期化でこれを行うように要求または推奨するのではなく、単にユーザーセッションが機能するために必要な単位です。

あなたがこれをしたいなら今後グラフィカルな目標またはマルチユーザーの起動目標を達成したら、起動システムに呼び出す起動スクリプトがあることを確認するだけです。

今、どのブートシステムを使用しているのか、どのオペレーティングシステムを使用しているのかを言う必要はありません。しかし、「bash」を読むと、systemdがあるLinuxであると仮定します。

これはこれを非常に簡単にします。ただいわゆる書き込みシステム単位ファイルその後、開始を要求します。これは、ネットワークが起動するとすぐに実行でき、同期ファイルが主にネットワークデータを待機してバインドされるため、システム内の他の項目を並列に初期化できるため、非常にエレガントです。これは基本的にシステムには影響しません。 。追加のロードが発生し、ログインするだけで同期が完了します。

システム単位ファイルはおおよそ次のようになります。

[Unit]
Description=Syncing stuff to and fro Google Drive

[Service]
Type=oneshot
ExecStart=/usr/bin/rclone --options-to-rclone --whatevers
Requires=network.target
After=network.target
# The following only if not right to run rclone as root
User=yourusername
Group=yourgroupnametypicallysameasusername

[Install]
WantedBy=multi-user.target
# use WantedBy=graphical.target instead if you need that to be done
# only when the system's ready to log in graphically

たとえば、systemdシステムサービスファイルディレクトリに.serviceファイルとして保存し、/etc/systemd/system/rsync-googledrive.server起動sudo systemctl enable rsync-googledrive時にサービスが開始されることを確認します。

代わりに、それをユーザーサービスに入れることもできます~/.config/systemd/user/。この場合、User=行を削除してその行をに置き換えます。Group=WantedBy=WantedBy=default.target

おすすめ記事