web-dev-qa-db-ja.com

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

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

私はそこに着く方法を完全に明確にしていません。最初のスクリプトを&(バックグラウンドで実行する)で呼び出す2番目のスクリプトを使用して、最初のスクリプトにwait(数秒|特定のイベント)を追加しますか?

5
stwissel

高価なものを起動する場合は、遅れてバックグラウンドで起動します。例えば

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

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

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

「Nice-to-haves」スクリプトの先頭でsleepを呼び出すだけです。これにより、デスクトップの読み込みがブロックされることはありません。また、各プロセスをバックグラウンド化することにより、マルチコアハードウェア上で速度を上げることができる場合があります。

例えば.

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

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

2
Jon Molnar