在用户登录后,在Raspberry pi上执行脚本

时间:2013-07-30 06:11:08

标签: startup raspberry-pi

我开发了一个应用程序,供用户在屏幕上查看特定时间。我正在使用pygames库,用户运行.py文件后,GUI全屏显示。

我想要一个解决方案,以便用户不需要运行该文件,而是在登录完成后自己执行文件

4 个答案:

答案 0 :(得分:1)

将脚本添加到/etc/rc.local文件。

在带有文本编辑器的Raspberry pi open /etc/rc.local上,我使用VIM和sudo命令。

打开文件后,您会看到如下内容:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

#Add your script here
/home/pi/somescript.sh

exit 0

一旦您添加了脚本的路径,该文件将在重新启动时执行。如果您想在登录时运行,请执行相同的操作,但请改为编辑.bashrc文件。

答案 1 :(得分:0)

Raspberry PI运行Debian操作系统。

有关如何在启动时运行python脚本的相关讨论可以找到here 如果要在启动新终端时运行脚本,则需要更新.bash_profile,.profile,.bashrc文件。有关此here

的更多信息

答案 2 :(得分:0)

假设桌面为LXDE,则可以使用LXSession在登录时自动启动应用程序。要配置它: 菜单->首选项-> LXSession的默认应用程序

点击“自动启动” *禁用自动启动的应用程序? =否

在“ +添加”旁边的框中输入应用程序的名称,然后按“ +添加”,它将出现在“手动自动启动的应用程序”下。

Setting up autostart for the application

注销并再次登录,应用程序应该启动。

Autostarted application after login

答案 3 :(得分:0)

这花了我一些时间来弄清楚,所以,我想我会提供我的智慧。在下面的示例中,我将设置一个Raspberry Pi,以在启动时(使用外围设备)挖掘加密货币,并使用具有应用程序资产的特定工作目录,并已启用自动登录。为自动启动创建新条目...

cd /home/pi/.config/autostart/
sudo vim miner.desktop

miner.desktop中,我添加了要在用户登录后在启动时运行的命令。如果不确定格式,通常在该文件夹中已经有一个示例(对我来说,是LXinput-setup.desktop),则可以根据需要将其用作模板。

[DeskTop Entry]
Type=Application
Name=Miner (or whatever you want to call it)
Comment=MINE! (or whatever comment you want to add)
Exec=lxterminal --working-directory=/home/pi/Documents/miner/ -e ./start_moonlander2.sh
NotShowIn=GNOME;KDE;XFCE

您可以想象,Exec的值是实际执行的值。让我们分解一下这个命令...

lxterminal --working-directory=/home/pi/Documents/miner/ -e ./start_moonlander2.sh
  • lxterminal:用于启动终端窗口的新进程的应用程序。
  • --working-directory=/home/pi/Documents/miner/:设置执行的工作目录。如果您的脚本使用本地文件(即,如果其应用程序资源位于/pi/Documents/miner/中,则这将非常重要)。
  • -e ./start_moonlander2.sh:这是在先前指定的工作目录中运行的命令。我正在执行一个本地sh脚本,该脚本正在使用工作目录中的资产。

想知道您做的事情是正确的吗?如果您在新的终端窗口中运行,则lxterminal命令应该单独运行。这将导致一个新的终端窗口弹出并运行您的命令。如果崩溃了,则不太可能使用新的[DeskTop Entry]来正确启动,并且您需要首先使它正常工作。