在Ubuntu启动时运行Python脚本
我有一个简单的Python脚本需要在Ubuntu 13.10启动时运行。我尝试了很多方法,但就是无法让它运行。这个脚本是:
#!/usr/bin/python
import time
with open("/home/username/Desktop/startup.txt", 'a') as f:
f.write(str(time.time()) + " It worked!")
(实际的脚本稍微有点不同,我只是用这个来测试,但你大概明白我的意思。)
我尝试了以下所有方法,但都没有成功:
在
crontab
中添加命令python startuptest.py
,格式是@reboot python /home/username/Documents/startuptest.py
,我用的是普通用户和sudo
都试过。在
/etc/rc.local
中添加命令python /home/username/Documents/startuptest.py
。打开Ubuntu的启动应用程序,把命令放在那里。
做了以上所有步骤,把命令放进一个shell脚本里,然后调用这个shell脚本。
但是都不行。我感觉我可能漏掉了什么简单的东西。有没有什么建议?(如果我直接在终端运行这个命令,脚本是可以正常工作的。)
6 个回答
打开终端,输入
nano /etc/rc.local
然后在里面添加
python ~/path-to-script.py
这样做对我有效。
创建一个文件 ~/.config/autostart/MyScript.desktop,内容是:
[Desktop Entry]
Encoding=UTF-8
Name=MyScript
Comment=MyScript
Icon=gnome-info
Exec=python /home/your_path/script.py
Terminal=false
Type=Application
Categories=
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0
这对我有帮助!
如果你在使用Ubuntu系统,其实只需要写你的Python文件的代码,不需要其他的代码。下面是步骤:
- 打开Dash(侧边栏的第一个图标)。
- 然后输入启动应用程序,打开这个应用。
- 在这里点击右边的添加按钮。
- 填写相关信息,在命令区域找到你的Python文件,然后点击确定。
- 通过重启系统来测试一下。完成了!享受吧!!
把这个放到 /etc/init
目录下(在 Ubuntu 15.x 版本中使用 /etc/systemd
)
mystartupscript.conf
start on runlevel [2345]
stop on runlevel [!2345]
exec /path/to/script.py
把这个配置文件放在那儿,你就能让 Ubuntu 的 upstart 服务在开机时自动运行你设置的服务。
如果你想手动启动或停止这个服务,可以使用以下命令:
sudo service mystartupscript start
和
sudo service mystartupscript stop
操作步骤
把你的 Python 文件复制到 /bin 文件夹:
sudo cp -i /path/to/your_script.py /bin
添加一个新的定时任务:
sudo crontab -e
滚动到最底部,在所有的
#
后面添加以下这一行:@reboot python /bin/your_script.py &
这一行最后的“&”表示这个命令会在后台运行,不会影响系统的启动。
测试一下:
sudo reboot
实际例子:
在你的桌面上添加这个文件: test_code.py(运行一下,确保它能正常工作)
from os.path import expanduser import datetime file = open(expanduser("~") + '/Desktop/HERE.txt', 'w') file.write("It worked!\n" + str(datetime.datetime.now())) file.close()
运行以下命令:
sudo cp -i ~/Desktop/test_code.py /bin
sudo crontab -e
添加以下这一行并保存:
@reboot python /bin/test_code.py &
现在重启你的电脑,你应该会在桌面上看到一个新文件:
HERE.txt