當我的Raspberry Pi啟動時,我正在嘗試執行腳本。我希望網絡瀏覽器能夠自動打開。 。
我調查了 Upstart,但我一直在努力了解其工作原理。當我測試它們時,我嘗試過的所有腳本都無法正常工作。
當我的Raspberry Pi啟動時,我正在嘗試執行腳本。我希望網絡瀏覽器能夠自動打開。 。
我調查了 Upstart,但我一直在努力了解其工作原理。當我測試它們時,我嘗試過的所有腳本都無法正常工作。
此答案已過時-並包含錯誤的方法,即使在編寫時也是如此。
不幸的是,這仍然被標記為
要在啟動時運行Midori,請查看本教程。有關DIY解決方案,請繼續閱讀。
您可以將腳本可執行命令添加到 .bashrc
的底部,該命令將在每次打開終端時運行腳本(或運行 bash
的新實例)。
請確保您位於 pi
文件夾中:
$ cd〜
創建文件並編寫腳本以在文件中運行:
$ sudo納米上標
保存並退出: Ctrl kbd> + X kbd>, Y kbd>,輸入 kbd>
打開 .bashrc
進行配置:
.bashrc
不旨在運行腳本。每次非登錄時都會運行
〜/ .bashrc:由bash(1)對非登錄shell執行
。
$ sudo nano .bashrc
向下滾動到底部並添加l ine: ./ superscript
保存並退出: Ctrl kbd> + X kbd>, Y kbd>,輸入 kbd>
如果您正在尋找在啟動到控制台時可以使用的解決方案,請查看此鏈接。基本清單:
為啟動腳本創建一個文件,並將腳本寫入該文件:
$ sudo nano /etc/init.d / superscript
保存並退出: Ctrl kbd> + X kbd>, Y kbd> , Enter kbd>
使腳本可執行:
$ sudo chmod 755 /etc/init.d/superscript
註冊要在啟動時運行的腳本:
$ sudo update-rc.d上標默認值
如果您希望腳本在啟動時運行進入LXDE環境,您可以查看此Raspberry Pi論壇帖子:
導航到〜/ .config / lxsession / LXDE-pi
打開該文件夾中的 autostart
文件:
$ sudo nano autostart
在新行上添加 @midori
。如果要運行類似python腳本的內容,請在新行上添加類似 @python mypython.py
的內容。運行腳本文件應該是 @。/ superscript
,但是由於某種原因,腳本會無限循環地運行(也許 this會阻止它運行)。
保存並退出: Ctrl kbd> + X kbd>, Y kbd>, Enter kbd>
將Raspberry Pi重新啟動到LXDE環境中。
我見過的大多數人(在Raspberry Pi論壇上看過)並成功完成自己的方式是使用 /etc/rc.local
。
您在這裡所需要做的就是將 ./ myscript
放在rc.local文本文件中。如果是在python中,請將 python myscript.py
。
從字面上看,這是“一個簡單的解決方案,(例如將我的腳本放置在某些”啟動”目錄或類似的目錄中)”也許在您有疑問時也可以在論壇上進行搜索,此解決方案將出現在Google搜索的前4個結果中!
crontab在定義的時間運行命令。
編輯文件:
sudo crontab -e
在文件中添加一行(此處為python腳本):
@reboot python3 /home/pi/Desktop/exemple.py & 代碼>
如果您要啟動的腳本需要xorg會話,則可以嘗試遵循 freedesktop自動啟動規範,該規範可能會或可能不會生效,具體取決於哪個桌面
或者,您可以按 https://wiki.archlinux.org/index.php/autostarting中的描述定位特定的桌面環境。
>如果您的腳本符合守護程序或“服務”的描述,並且系統正在運行 systemd對於raspbian和大多數現代linuce,則可以將腳本配置為作為系統服務運行-這提供了對生命週期和執行環境的精細控制,以及(重新)啟動腳本的前提條件,例如網絡正常運行和啟動。運行。如果出現故障( Restart = always
,以及重新啟動之間的延遲,例如 RestartSec = 10
),也可以配置服務重新啟動。
對於全系統使用在 / etc / systemd / system
下創建您的systemd單元文件,例如與 vim /etc/systemd/system/autossh.service
:
[Unit] Description = Autossh keepalive守護程序##確保我們僅在網絡啟動後才啟動服務。Wants= network-online.targetAfter = network.target [Service] ##如果服務背景本身本身,請使用'Type = forking'##其他值是Type = simple(默認)和Type = oneshotType = forking ##在這裡我們可以設置自定義環境變量Environment = AUTOSSH_GATETIME = 0Environment = AUTOSSH_PORT = 0ExecStart = / usr / local / bin / ssh-keep-alive.shExecStop = / usr / bin / killall -9 autossh ###注意:您可以有多個`ExecStop`行ExecStop = / usr / bin / killall ssh#如果您的腳本需要訪問用戶文件,請不要使用'nobody'#(如果未設置User,則該服務將以root用戶身份運行)#User =沒有人#在調試期間很有用;服務運行後將其刪除StandardOutput = console [Install]
WantedBy = multi-user.target
另請參見:
[ unit
]配置
現在我們已經準備好測試服務了:
systemctl start autossh
檢查服務狀態:
systemctl status autossh
停止服務:
systemctl停止autossh
一旦您確認該服務可以正常工作,請使用以下命令啟用該服務:
systemctl enable autossh
注意:為了安全起見,
systemd
將在受限環境中運行腳本,類似於crontab
腳本已運行,因此不要對現有的系統變量做任何假設。如果您的腳本需要定義特定的變量,請使用Environment
鍵。在bash腳本的頂部添加set -x
,然後運行systemctl status my_service
可能有助於確定腳本失敗的原因。通常,始終對所有內容使用絕對路徑,包括echo
和cat
,或明確定義$ PATH。 sup>
儘管這是一個老問題,但我通常想做一些簡單的事情-自動啟動,我想投入兩分錢。我針對該問題在所有答案中嘗試了所有建議的解決方案。他們都沒有為我工作。我正在將Raspberry PI Model 2與Raspbian一起使用。
我要使我的應用程序成功自動啟動的唯一方法是通過腳本,如下所示。我之所以說成功,是因為我的應用程序按預期方式啟動,而沒有諸如以錯誤的工作路徑開頭之類的任何問題。
1。創建一個擴展名為.sh的空文件,並將其命名為任意名稱。 > 2。完全複製並粘貼以下內容,只是將“您的應用程序名稱”更改為剛創建的腳本名稱。
#! / bin / sh ### BEGIN INIT INFO#提供:noip#必需開始:$ remote_fs $ syslog#必需停止:$ remote_fs $ syslog#缺省開始:2 3 4 5#缺省停止:0 1 6#簡短描述:用於在啟動時啟動程序的簡單腳本### END INIT INFO#將/ direct / path / to / your / application更改為應用程序所在的路徑。cd / direct / path / to / your / application#示例cd / home / pi / myprogram /#將YourProgramExactName更改為要自動啟動的程序的確切名稱。/YourProgramExactNameexit 0
然後,將腳本文件保存在應用程序文件夾中
然後,打開 /home/pi/.config/autostart
文件夾。您的情況可能有所不同。只需打開您的主文件夾並啟用查看隱藏的文件夾。打開 .config / autostart
。如果看不到自動啟動文件夾,請在.config文件夾中創建一個名為自動啟動的文件夾。
在自動啟動文件夾中,您需要為腳本文件創建一個快捷方式,創建如下。創建一個擴展名為 .desktop
的空文件。
將以下內容複製並粘貼到空的桌面文件中,除非您需要更改註釋
,名稱
, Exec
,路徑
和 Icon
字段的值。
[桌麵條目] Comment = Exec = / path / to / Your / application / Name-of-腳本文件(.sh)Icon = / Path / to / Your / application / Icon / IconNameName = YourApplicationEXACTNAMEPath = / Path / to / Your / Application-ONLYType = Application
在更改所有必要字段後保存並關閉文件。大功告成只需測試一下即可。
我對此也有麻煩。在運行Raspbian的Raspberry Pi3上,這就是我所做的:
sudo leafpad launch.sh
sudo leafpad /home/pi/.config/lxsession/LXDE-pi/autostart
./ launch.sh
新方法-RASPBERRY PI OS。
這也適用於其他版本。
創建桌面文件
xyz.desktop
在其中鍵入以下內容
[桌麵條目] Encoding = UTF-8Type = ApplicationName = <應用程序名稱轉到此處>Comment = Exec = python / home / pi / Desktop / execute_on_boot.pyStartupNotify = falseTerminal = trueHidden = false
將此文件粘貼到
/home/pi/.config/autostart /
並重新啟動樹莓派,它會自動在新終端中運行程序。
舊方法-RASBIAN STRETCHOn運行Raspbian的Raspberry Pi3拉伸這就是我所做的:
編輯LXDE-pi自動啟動文件
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
將此添加到該文件的底部
@sudo python3 /path/to/your/script.py
保存&重新啟動
要在登錄時自動啟動命令,請將命令放入名為
.bashrc
在用戶目錄(例如/ home / pi)中
。
不旨在運行腳本。 每次啟動非登錄交互shell時都會運行它,並用於配置shell。
〜/ .bashrc:對於非登錄shell,由bash(1)執行
。
例如,文件可能包含
chromium-browser --kiosk www.google.com
以全屏方式啟動Chromium,指向www.google.com
此解決方案非常有效。一旦瀏覽器加載完畢,屏幕左上方就會出現一個黑色小方塊,這似乎是一個常規錯誤(其他人在論壇上提到了該錯誤),但是全屏模式會隱藏瀏覽器頁面以外的所有內容。
編輯自動啟動文件:
sudo nano / etc / xdg / lxsession / LXDE / autostart
在開始時使用“#”註釋所有內容每行,然後添加以下行
@xset s off @ xset -dpms @ xset s noblank @ midori -e全屏-a http ://google.com
如有必要,請使用配置工具在加電時啟用GUI自動運行
sudo raspi-config
如果需要返回到命令提示符,請按 CTRL kbd> + ALT kbd> + F1 kbd>
CTRL kbd> + ALT kbd> + F2 kbd>
使用命令“ python /path/to/your/script.py”創建.sh文件,鍵入“ sudo nano /etc/rc.local”,然後鍵入.sh文件的路徑
在
退出0
之前,或者您只需輸入
crontab -e
如果您希望腳本在啟動時運行,請在文件內
或
sudo crontab -e
輸入
@reboot python /path/to/your/script.py &
您可以將腳本放置在 / etc / profile
文件的底部。
其他選項對我不起作用,但這可能是因為我將腳本放置在了桌面。
它工作。(在每次重新引導時,它都會自動準備以下提交)
$ cat /etc/rc.local#!/bin/sh -eecho“ 18” > / sys / class / gpio / exportecho“出” > / sys / class / gpio / gpio / gpio18 / directionecho“ 1” > / sys / class / gpio / gpio18 / valueexit 0
>
這通常是我要做的事情。
編輯文件:
sudo nano .bashrc
.bashrc
是 NOT ,旨在運行腳本。每次啟動非登錄交互式shell並運行
〜/ .bashrc:由bash(1)對非登錄shell執行
。
轉到文件末尾並寫:
sudo python mycode.py
如果要將輸出存儲在txt文件中,請按如下所示在步驟3中編輯代碼:
sudo python mycode.py >> output.py
希望這會有所幫助!