web-dev-qa-db-ja.com

Ubuntuでネットワーク接続後にプログラムを自動起動するにはどうすればよいですか?

ネットワーク接続後にlubuntuでクロムを自動起動するにはどうすればよいですか?

〜/ .config/autostart /を追加しようとしましたが、wifi接続の前にクロムが起動したため、エラーページが表示されます。

Googleで検索しましたが、まだ解決策が見つかりません。

4
user998661

エレガントな方法はわかりませんが、これがうまくいくはずのアプローチです。

オンラインかどうかをテストするスクリプトを作成します。そうでない場合は、しばらくスリープしてから、ループバックして再度テストします。オンラインになったら、chromeを開始し、終了するなどします。そのスクリプトを自動開始ディレクトリに配置します。

Bashでは、waitコマンドはsleepです。待ちたい秒数の引数が必要です。スクリプトが頻繁にテストされたり、リソースを使い果たしたりするのを防ぎます。

秘訣は、あなたがオンラインであるかどうかを把握することです。そのための1つの方法は、オンラインでない場合に失敗する小さなことを行うことです。以下は、始めるのに十分なハックです(bashを知っている場合)。 Webのどこかでwgetコマンドのトリックを見つけました。それが何をするのか正確にはわかりませんが、すばやく、機能します。

パスをクロムに置き換える必要があります。

chrome行の終わりにあるアンパサンドにより、chromeがバックグラウンドで実行されるため、スクリプトはchromeが終了します。継続して正常に終了し、chromeは単独で実行されます。

気になりたい場合は、タスクのプロセスIDをファイルなどに保存する方法があるので、chrome特定のセッションでオンラインになったときに開始します。しかし、それはあなたの質問の範囲を少し超えています。(そして私はそれを行う方法を覚えていません;))

#!/bin/bash

function online {
  ## Test if online - prototype code
  wget -q -O /dev/null --timeout=5 http://udc.msn.com/c.gif
  return $?
}

until online
do
  sleep 5
done

/opt/google/chrome/google-chrome &
4
Joe

実例...

#!/bin/bash

function online {
  ## Test if online - prototype code
  ping -c 1 google.com 
  return $?
}

until online
do
  sleep 5
done

vmware-view %u --nonInteractive &
0
user994545

以下はうまくいくと思いますが、~/.configでパスを~/.bashrcに設定していると仮定しています。

Bashrcのパスが次のように設定されていることを確認してください

export PATH=$PATH:$HOME/.config:/other/stuff

の代わりに

export PATH=$HOME/.config:/other/stuff:$PATH

ここで、$PATHはシステム全体のPATH設定です。ログイン時に/etc/xdg/autostartの自動起動ファイルがホーム設定の前に読み取られるようにします。

0
Magpie