Rus*_*sty 131 startup command-line scripts
我在一个文件夹中有一个脚本:
/path/to/my/script.sh
Run Code Online (Sandbox Code Playgroud)
每次系统启动时我都需要运行这个脚本(即使没有人登录系统)。我需要做什么才能实现这一目标?
jdt*_*ood 154
您将需要 root 权限才能执行以下任何操作。要获得 root,请打开终端并运行命令
sudo -i
Run Code Online (Sandbox Code Playgroud)
并且命令提示符将更改为“#”,表示终端会话具有 root 权限。
/etc/rc.localvi /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
内容如下:
# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1 # Added by me
exit 0
Run Code Online (Sandbox Code Playgroud)
创建 /etc/init/myjob.conf
vi /etc/init/myjob.conf
Run Code Online (Sandbox Code Playgroud)
内容如下
description "my job"
start on startup
task
exec /path/to/my/script.sh
Run Code Online (Sandbox Code Playgroud)
来自暴发户网站的官方声明->“项目仅处于维护模式。没有正在开发新功能,一般建议是转移到另一个最小的 init 系统或 systemd。”
中创建一个新脚本/etc/init.d/myscript。
vi /etc/init.d/myscript
Run Code Online (Sandbox Code Playgroud)
(显然它不必被称为“myscript”。)在这个脚本中,做任何你想做的事。也许只需运行您提到的脚本。
#!/bin/sh
/path/to/my/script.sh
Run Code Online (Sandbox Code Playgroud)
使其可执行。
chmod ugo+x /etc/init.d/myscript
Run Code Online (Sandbox Code Playgroud)
将 init 系统配置为在启动时运行此脚本。
update-rc.d myscript defaults
Run Code Online (Sandbox Code Playgroud)
Dan*_*nes 65
您不需要root,甚至不需要登录。
您可以编辑您的 crontab ( crontab -e) 并创建如下条目:
@reboot /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
这样,您就可以以普通用户身份运行它。@reboot只是意味着它在计算机启动时运行(不一定只在重新启动时运行)。
PS:关于这不能正常工作的评论
有人说这不适用于基于 Debian 的发行版,例如 Ubuntu。我个人已经在 Ubuntu 和 Mint 上成功地使用了这种方法。但是,有几件事需要考虑。
在@rebootcron守护程序启动时,作业的运行。我发现在基于 Debian 的发行版上,这可能发生在/home分区被挂载之前。如果您正在运行的脚本在您的主文件夹中,它将失败。
此外,这不仅限于基于 Debian 的发行版,而且如果您的主文件夹已加密,则在您登录之前可能无法解密。可能没有办法解决这个问题。
此外,您的网络接口可能尚未启动,如果该命令需要访问 Internet,则可能会失败。
最后,再次重申,这不仅限于基于 Debian 的发行版,而且 cron 运行的环境比您的 shell 运行的环境要有限得多。特别是,PATH变量的路径要少得多。这可能是正在运行的命令没有找到,如果它在,例如,像$HOME/.local/bin,这可能是你PATH在你的shell会话,但不能下cron。甚至有可能正在运行的命令取决于某些未在cron.
因此,您的命令将在 cron 下运行的原因有很多,但这并不是因为@reboot它不适用于您的发行版。
Cha*_*tor 14
从终端
newshell.sh.desktop在~/.config/autostart文件夹中创建文件:
gedit ~/.config/autostart/newshell.sh.desktop
Run Code Online (Sandbox Code Playgroud)变化Exec,Name和Comment值,并添加到文件:第一行
[Desktop Entry]
Type=Application
Exec=/full/link/to/your/newshell.sh
Name=newshell
Comment=whatever you want
Run Code Online (Sandbox Code Playgroud)节省
或者
您可以从 GUI 执行此操作:
Exec,Name和Comment。