GUIが読み込まれた後にスクリプトを実行する

GUIが読み込まれた後にスクリプトを実行する

起動時、ログイン時(システム > 環境設定 > スタートアップアプリケーション)またはシェルを開くとき(.bashrc)にプログラムを実行する方法は知っています。また、「デスクトップが読み込まれた後にスクリプトを実行しますか?」スタートアップ アプリケーションに追加されたすべてのアプリケーションによって、デスクトップが使用可能になるまでの時間が長くなることに気付きました。そのため、通常のスタートアップが完了した後に実行されるスクリプト (動作しています) から、すべての「あったら便利なもの」を起動する方法を探しています。

そこに到達する方法がよくわかりません。 & を使用して最初のスクリプトを呼び出す 2 番目のスクリプト (バックグラウンドで実行される) を使用し、最初のスクリプトに待機 (数秒 | 特定のイベント) を追加しますか?

答え1

「あったら便利な」スクリプトの先頭で呼び出すだけですsleep。デスクトップの読み込みがブロックされることはありません。また、各プロセスをバックグラウンドで実行することで、マルチコア ハードウェアでの処理速度を向上できる場合もあります。

例えば

sleep 20s
<something that takes a long time> &
<this can now start immediately> &
...

2 つのコマンドは並行して実行されますが、開始前に 20 秒間待機します。数秒では足りない場合は、「m」、「h」、または「d」を使用して分、時間、または日数を指定できます。=)

答え2

何か高価なものを起動する場合は、遅延させてバックグラウンドで起動します。たとえば、

after 20s find-all-the-dirty-dishes &
after 1m find ~ -name '*~' -mtime +30 -exec rm '{}' ';'

自分で実装する必要がありますafterが、次のようなものになります

#!/bin/sh
sleep "$1"
shift
exec "$@"

関連情報