Raspberry Piの起動時にスクリプトを実行しようとしています。Webブラウザを自動的に開きたいです。
単純な解決策を見つけようとしました(スクリプトを「スタートアップ」ディレクトリなどにドロップします)が、そのようなものは見当たりません。
Upstartを調べましたが、それがどのように機能するかを把握するのに苦労しています。私が試したスクリプトは、テストしても機能しませんでした。
Raspberry Piの起動時にスクリプトを実行しようとしています。Webブラウザを自動的に開きたいです。
単純な解決策を見つけようとしました(スクリプトを「スタートアップ」ディレクトリなどにドロップします)が、そのようなものは見当たりません。
Upstartを調べましたが、それがどのように機能するかを把握するのに苦労しています。私が試したスクリプトは、テストしても機能しませんでした。
回答:
スタートアップでMidoriを実行するには、このチュートリアルをご覧ください。DIYソリューションについては、続きをお読みください。
あなたはの底にスクリプト実行コマンドを追加することができ.bashrc
ますそのスクリプトたびにターミナルを開く(またはの新しいインスタンスを実行を実行しますbash
)。
pi
フォルダー内にいることを確認します。
$ cd ~
ファイルを作成し、そのファイルで実行するスクリプトを作成します。
$ sudo nano superscript
保存して終了:Ctrl+ X、Y、Enter
.bashrc
設定のために開きます:
.bashrc
スクリプトを実行するためのものではありません。非ログインの対話型シェルが起動されるたびに実行され、シェルの構成に使用されます。
~/.bashrc: executed by bash(1) for non-login shells
。
$ sudo nano .bashrc
下にスクロールして、次の行を追加します。 ./superscript
保存して終了:Ctrl+ X、Y、Enter
コンソールの起動時に機能するソリューションをお探しの場合は、このリンクをご覧ください。基本的な要約:
スタートアップスクリプト用のファイルを作成し、ファイルにスクリプトを記述します。
$ sudo nano /etc/init.d/superscript
保存して終了:Ctrl+ X、Y、Enter
スクリプトを実行可能にします。
$ sudo chmod 755 /etc/init.d/superscript
起動時に実行するスクリプトを登録します。
$ sudo update-rc.d superscript defaults
LXDE環境を起動するときにスクリプトを実行したい場合は、このRaspberry Piフォーラムの投稿をご覧ください。
案内する ~/.config/lxsession/LXDE-pi
autostart
そのフォルダー内のファイルを開きます。
$ sudo nano autostart
@midori
新しい行を追加します。pythonスクリプトのようなものを実行したい場合@python mypython.py
は、新しい行に何かを入れてください。スクリプトファイルの実行はになります@./superscript
が、何らかの理由でスクリプトが無限ループで実行されます(おそらくこれで停止します)。
保存して終了:Ctrl+ X、Y、Enter
Raspberry PiをLXDE環境で再起動します。
$ sudo startx
?
.bashrc
システムの起動時またはユーザーのログイン時に読み取られるのではなく、新しい端末を開くときにのみ読み取られます(ユーザーが新しい端末を開くたびに読み取られます)。私はこの答えが非常に多くの賛成票を得たことに当惑しています:最初の部分は明らかに間違っています。3番目の部分は、GUIプログラムを実行するのに適切です。
私がほとんどの人がそれを実行し(Raspberry Piフォーラムをご覧ください)、成功して自分自身を実行した方法はを使用してい/etc/rc.local
ます。
ここで必要なの./myscript
は、rc.localテキストファイルに入れることだけです。Pythonの場合は、を入れpython myscript.py
ます。
これは文字通り「シンプルなソリューション(「スクリプト」を「スタートアップ」ディレクトリなどにドロップするなど)」です。質問がある場合はフォーラムで検索してください。このソリューションは、 Google検索!
python myscript.py
ます。あなたは+ Xそれをchmodコマンドと追加したい場合は#! /bin/python
、あなたがやってスクリプトを実行できる$pathtofile/myscript.py
場所$pathtofile
である.
あなたが同じディレクトリやファイルへの絶対パスまたは相対パスにしています。
/etc/rc.local
システムサービス(ユーザーインターフェイスを持たないプログラム)を開始するだけです。
crontabは、定義された時間にコマンドを実行します。
ファイルを編集します。
sudo crontab -e
ファイルに行を追加します(ここではpythonスクリプト):
@reboot python3 /home/pi/Desktop/exemple.py &
/etc/rc.local
ユーザーインターフェイスを持たないプログラムを起動するだけです。
開始したいスクリプトがxorgセッションを必要とする場合、使用しているデスクトップ環境に応じて動作する場合と動作しない場合があるfreedesktop autostart仕様に従うことをお勧めします。
または、https://wiki.archlinux.org/index.php/autostartingで説明されているように、特定のデスクトップ環境をターゲットにすることができます。
スクリプトがデーモンまたは「サービス」の説明に適合し、システムがsystemdを実行している場合(raspbianおよび最新のlinucesの場合)、systemdサービスとして実行するようにスクリプトを構成できます。ライフサイクルと実行環境、およびネットワークが稼働しているなど、スクリプトを(再)開始するための前提条件。障害が発生した場合のサービスの再起動を構成することもできます(Restart=always
、および再起動間の遅延などRestartSec=10
)。
システム全体で使用する場合は/etc/systemd/system
、たとえば、vim /etc/systemd/system/autossh.service
次のようにsystemdユニットファイルを作成します。
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
こちらもご覧ください:
[ unit
]構成
これで、サービスをテストする準備ができました。
systemctl start autossh
サービスのステータスの確認:
systemctl status autossh
サービスの停止:
systemctl stop autossh
サービスが期待どおりに機能することを確認したら、次を使用して有効にします。
systemctl enable autossh
注:セキュリティ上の理由
systemd
から、crontab
スクリプトの実行方法と同様に、制限された環境でスクリプトを実行します。したがって、既存のシステム変数に関する仮定を行わないでください。Environment
スクリプトで特定の変数を定義する必要がある場合は、キーを使用します。set -x
bashスクリプトの先頭に追加して実行systemctl status my_service
すると、スクリプトが失敗する理由を特定するのに役立つ場合があります。Tumbのルールとして、echo
とを含むすべてのものに対して常に絶対パスを使用cat
するか、$ PATHを明示的に定義します。
これは古い質問ですが、一般的に簡単なことを行うように求められていますが、私は2セントを投入したいと思います-自動起動。この質問に対するすべての回答で提案されたすべての解決策を試しました。それらのどれも私のために働いた。RaspbianでRaspberry PI Model 2を使用しています。
アプリケーションを正常に自動起動させる唯一の方法は、次のようなスクリプトを使用することです。間違った作業パスで開始するなどの問題が発生することなく、アプリケーションが期待どおりに開始されたため、成功しました。
1.拡張子が.shの空のファイルを作成し、任意の名前を付けます。
2.「アプリケーション名」を作成したスクリプト名に変更することを除いて、以下を正確にコピーして貼り付けます。
#! /bin/sh
### BEGIN INIT INFO
# Provides: noip
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
### END INIT INFO
#change /direct/path/to/your/application to the path your application is in.
cd /direct/path/to/your/application # example cd /home/pi/myprogram/
#change YourProgramExactName to Exact name of your program that you want to auto start
./YourProgramExactName
exit 0
次に、アプリケーションフォルダー内にスクリプトファイルを保存します
次に、/home/pi/.config/autostart
フォルダーを開きます。あなたの場合は違うかもしれません。ホームフォルダーを開き、非表示フォルダーの表示を有効にするだけです。開き.config/autostart
ます。自動起動フォルダーが表示されない場合は、.configフォルダー内に自動起動というフォルダーを作成します。
自動起動フォルダー内で、次のように作成したスクリプトファイルへのショートカットを作成する必要があります。拡張子が空のファイルを作成します.desktop
。
コピーして変更する必要がありますを除いて、空のデスクトップファイルに以下を貼り付けComment
、Name
、Exec
、Path
およびIcon
フィールドの値。
[Desktop Entry]
Comment=
Exec=/path/to/Your/application/Name-of-the-script-file (.sh)
Icon=/Path/to/Your/application/Icon/IconName
Name=YourApplicationEXACTNAME
Path=/Path/to/Your/Application-ONLY
Type=Application
必要なすべてのフィールドを変更した後、ファイルを保存して閉じます。できました。試してみてください。
/usr/local/bin/ApplicationName
...に属しているほうがよいでしょうか?
home
、別のデバイス)に問題がある場合、スクリプト(または実行可能ファイル)が利用できない場合に問題は発生しません。システムはシングルユーザー/bin/sh
シェルにフェールバックします!昨今systemd
の方法は、両方をマウントすることです/
し、/usr
PID 1の前に...開始された
ログイン時にコマンドを自動的に起動するには、コマンドを次の名前のファイルに入れます
.bashrc
ユーザーディレクトリ(たとえば、/ home / pi)
.bashrc
スクリプトを実行するためのものではありません。非ログインの対話型シェルが起動されるたびに実行され、シェルの構成に使用されます。
~/.bashrc: executed by bash(1) for non-login shells
。
たとえば、ファイルには
chromium-browser --kiosk www.google.com
www.google.comを指すフルスクリーンでChromiumを起動する
このソリューションは本当にうまく機能します。ブラウザがロードされると、画面の左上に一般的なバグのように見える小さな黒い四角があります(他の人によってフォーラムで言及されています)が、それ以外の場合、フルスクリーンモードはブラウザページ以外をすべて非表示にします。
自動起動ファイルを編集します。
sudo nano /etc/xdg/lxsession/LXDE/autostart
各行の先頭に「#」を使用してすべてをコメントアウトし、次の行を追加します
@xset s off
@xset -dpms
@xset s noblank
@midori -e Fullscreen -a http://google.com
必要に応じて、構成ツールを使用して、電源投入時にGUIの自動実行を有効にします
sudo raspi-config
終了してコマンドプロンプトに戻る必要がある場合 CTRL+ ALT+F1
CTRL+ ALT+F2
スクリプトを/etc/profile
ファイルの最後に配置できます。
他のオプションは機能しませんでしたが、これはおそらくスクリプトをデスクトップに配置したためです。
これは私が一般的に行うことです。
ファイルを編集します。
sudo nano .bashrc
.bashrc
スクリプトを実行するためのものではありません。非ログインの対話型シェルが起動されるたびに実行され、シェルの構成に使用されます。
~/.bashrc: executed by bash(1) for non-login shells
。
ファイルの最後に移動して、次のように記述します。
sudo python mycode.py
出力をtxtファイルに保存する場合は、手順3のコードを次のように編集します。
sudo python mycode.py >> output.py
お役に立てれば!
.xinitrc
or.xsession
ファイルへの追加を検討する必要があります。