ログインごとに自動的に起動するようにいくつかのアプリケーション(redshift-gtk、gtgなど)をセットアップしましたが、これらを起動アプリケーションに追加した後(System -> Preferences -> Startup Applications
)明らかにログインにかかる時間が長くなりました。このため、パネルやデスクトップなどが表示されるまでにかかる時間が長すぎます。それまでは待たされます。
これらのアプリをすぐに利用できるようにする必要はありませんが、最終的に起動するとよいでしょう。その間、ubuntuメニュー/パネルは、必要になる可能性のある他のアプリを実行するために利用できます。
すべてのスタートアップアプリケーションを編集してコマンドをatキューに入れることを目的として、atコマンドを使用しようとしましたが、アプリが必要な環境変数(DISPLAYなど)を取得しないため、これは機能しませんでした。
これはnice
ですか コマンドは?に使用されますこれを達成する方法は他にありますか?可能であれば、スタートアップアプリケーションのコマンドを編集することは避けたいと思います。これは、使用している他のマシンで複製するのに多大な労力を必要とするためです。
承認された回答:
デスクトップがロードされるのを待つのに必要な秒数は任意であり、状況に応じて変わる可能性があります。 sleep
の代わりに 、システムの負荷が低下したらすぐに、以下を使用してスタートアップアプリケーションを実行してみてください。
(編集:koushikの提案を追加しました。)
#!/bin/bash
#
# Delays running an application until the system load has declined.
#
# Usage:
# run-when-load-low 'your command here'
echo "export DISPLAY=$DISPLAY; $1 &" | batch
exit 0
~/bin/run-when-load-low
として保存します run-when-load-low 'COMMAND'
を追加します スタートアップアプリケーションの設定で。
この方法に関する注意:
- 上記のスクリプトは私のために働いたものです。
DISPLAY
のみを渡します アプリケーションに対する環境変数。 ほとんど デスクトップアプリケーションこれはあなたが必要とするすべてです。そうは言っても、正しく動作していないものをトラブルシューティングするときは、特別な場合を考慮し、この事実を念頭に置いてください。アプリケーションで他の環境変数を渡す必要があると思われる場合は、printenv
から始めるとよいでしょう。 個人的にはまだこの問題に遭遇していませんが、アプリケーションのドキュメント。 - システムの「負荷」値についての私の理解では、IO待機が考慮されているため、IOを待機しているデスクトッププロセスによって引き起こされるCPU使用率の低下中に、遅延したアプリケーションが誤ってすぐに起動しないようにする必要があります。これは私がよく知っている分野ではないので、ここで間違っている場合は訂正してください。
batch
いつにのみ影響します アプリケーションが実行されます。それは彼らの優先順位/素晴らしさを変えません。- これは言うまでもありませんが、システムが常に 負荷が高いため、この方法を使用してスケジュールされたアプリケーションは実行されない可能性があります。
- スペースを含むパラメーターを使用してアプリケーションを実行する必要がある場合は、バックスラッシュを使用してそれらをエスケープできます:
run-when-load-low 'gedit My\ Notes.txt'
。本当に一重引用符で囲まれたパラメータをアプリケーションに渡す必要がある場合は、起動コマンドで二重引用符を使用する必要があります:run-when-load-low "gedit 'My Notes.txt'"
。これよりも複雑な場合は、コマンドをハードコードしてスクリプトのコピーを変更するのがおそらく最善です。