我想制作一个从我的计算机启动的 Python 3.4 脚本,以便永久检查它以随计算机启动(编辑:永久检查意味着它不能通过 xfce4-session-settings 禁用)。(编辑:这应该会影响所有用户,甚至是未来的用户,但如果你在我说这个之前回答,我不会考虑是否接受它。)脚本不需要结束,特别是。我不希望非特权用户能够取消选中它。我该怎么做呢?
目前,他们无法删除或编辑(甚至无法查看详细信息)该条目(谢天谢地),因为它是为所有用户(甚至是未来的用户)制作的。但是,他们似乎可以取消选中它。
myScript.desktop
(我通过添加一个文件/etc/xdg/autostart
并给它以下文本来为所有用户启用它:
[Desktop Entry]
Type=Application
Name=NameOfMyScript
Exec=MyScript
Icon=system-run
X-GNOME-Autostart-enabled=True
)
该脚本允许我更新基于 dns 的 Web 过滤器的 IP 地址。它会定期检查丢失的连接,以防路由器重置和 IP 地址更改。
我在 Xubuntu 14.04,64 位。
编辑...
我认为您正在寻找“初始化脚本”解决方案。这里有一个简单的例子: https ://unix.stackexchange.com/questions/6697/run-python-script-on-startup 另一个例子在这里: http: //mobiarch.wordpress.com/2014/05/16 /creating-an-init-script-in-ubuntu-14-04/
简要地说:你把你的脚本放到例如
/usr/local/bin/my_script.py
(这不是必需的,你甚至可以从你的主目录运行它)不要忘记:
sudo chmod +x /usr/local/bin/my_script.py
接下来,在
/etc/init.d
您创建一个文件,例如my_script
具有以下内容:由于您希望此脚本在启动时启动,因此请运行此命令:
sudo update-rc.d my_script defaults
我不确定我是否理解“在 Python 3.4 可用后我需要它来启动脚本,因为它是一个 Python 脚本;”。请尝试这种方式,让我知道它是否启动。
再次编辑...无论如何我在考虑...如果您的 python 脚本在某些不确定事件之前无法启动,也许您可以创建一个简单的 bash 脚本...类似这样的东西:
好吧,我找到了一个疯狂的解决方法。所以,我想我会分享。但是,我不希望它成为公认的答案(但它有效)。它可能危险也可能不危险。
那就是将xfc4-session-settings 从/usr/bin 复制到我真正希望能够使用它的所有用户的bin 文件夹中(例如/home/sally/bin)。然后,从/usr/bin 中删除它。然后,更改 home bin 目录的权限,使未经授权的用户无法访问它们。因此,所有未来的用户都看不到自动启动的内容。缺点是他们看不到任何内容(尽管他们看不到脚本很好)。如果您真的需要它,请保留一份副本以将其放回原处。重新启动(如果 bin 文件夹不存在)。
在我尝试删除它之前,我只是尝试更改它的权限,但它仍然设法为不应该访问它的用户打开。
我使用的另一个解决方案是基于
Upstart
,一个非常强大的东西。也许你根本不需要它。 http://upstart.ubuntu.com/cookbook/让我们在您的家中创建一个
/home/your_user_name/scripts/my_script.conf
包含以下内容的文件:我们需要让它可执行:
sudo chomd +x /home/your_user_name/scripts/my_script.conf
之后将此 .conf 文件链接到
/etc/init
目录中:sudo ln -s /home/your_user_name/scripts/my_script.conf /etc/init/my_script.conf
正如我记得的那样,在这些步骤之后,我的脚本在每次重新启动后启动,并在发生错误时重新启动。正如我认为您可能不希望您的脚本永远运行,因此您不需要
respawn
此文件中的部分,但也许这正是您所需要的,所以我就离开了。(我的脚本旨在永远运行,如果它以某种方式停止,则需要立即重新启动)。我仍然不确定你的句子“在 Python 3.4 可用后我需要它来启动脚本,因为它是一个 Python 脚本;” 但是 Upstart 被称为“基于事件的”,所以你可能需要它来微调起始条件......