系统启动时执行一次的任何文件

系统启动时执行一次的任何文件

每次操作系统启动时,是否存在评估一次的配置文件。bashrc 不符合条件,因为每次 gnome 终端启动时都会对其进行评估。

答案1

计划任务可以在这里提供帮助。

除了按分钟、小时、星期几、月份等开始某件事之外,它还有一些特殊操作:

@reboot 启动时运行一次。
@yearly 每年运行一次,“0 0 1 1 *”。
@annually (与 @yearly 相同)
@monthly 每月运行一次,“0 0 1 * *”。
@weekly 每周运行一次,“0 0 * * 0”。
@daily 每天运行一次,“0 0 * * *”。
@midnight (与 @daily 相同)
@hourly 每小时运行一次,“0 * * * *”。

使用以下命令从命令行完成编辑:

sudo crontab -e

在文件底部(下方# m h dom mon dow command),您可以添加一行来执行您想要的操作,例如@reboot /directory/to/file在启动期间执行 /directory/to/file。

仅一个警告:您需要确保该脚本没有输出或者输出被重定向到文件(或 /dev/null),因为 cron 没有显示来发送输出(并且它将结束操作)。

例子 sudo crontab -e

# 欲了解更多信息,请参阅 crontab(5) 和 cron(8) 的手册页
#
PATH=/usr/sbin:/usr/bin:/sbin:/bin
# mh dom mon dow 命令
@reboot /usr/bin/testscript

和...

cd /usr/bin/
sudo vi 测试脚本
echo“作品”> / tmp /测试
chmod 775 测试脚本

现在重新启动...这是一个有效的例子:

ls -l /tmp/测试
-rw-r--r-- 1 根 根 6 2011-05-29 08:34 /tmp/testing
rinzwind@discworld:/tmp$更多/tmp/testing
作品

答案2

当我需要添加“运行一次”命令时,我会使用两个地方:

每次用户登录时(无论是图形/GDM 还是文本/控制台登录): ~/.profile

优点:

  • 即使不使用 GDM/X11/Graphical 服务器,它也能正常工作。这意味着它可以与 SSH 和文本模式登录一起使用
  • gnome 终端启动时不会按要求进行评估。仅在登录时进行评估
  • 使用用户权限执行,它是安全的,同时允许完全访问个人脚本。
  • 在所有挂载完成后运行,以便整个文件系统可用。

缺点:

  • 如果用户登录、注销并再次登录,则每次登录都会再次执行一次。所以这不是“真正的”仅系统启动。但它也许能满足你的需要。
  • 由于这即使在文本模式登录下也会执行,因此建议不要放置任何需要 GDM/X11 服务器的命令(如 synergy daemon)
  • Bash 仅用于文本模式登录。因此,如果使用 GDM,则脚本中不接受任何 bashism,因为 Ubuntu 将使用dash

GDM 启动时(任何用户登录之前): /etc/gdm/Init/Default

优点:

  • 无论有多少用户登录或退出,都只执行一次
  • 可用于文本和图形命令
  • 在所有挂载完成后运行,以便整个文件系统可用。

缺点:

  • 使用用户运行gdm。因此个人脚本及其路径必须是全球可读且可执行的
  • 如果没有使用 GDM 服务器,则无法使用(呃)。因此它不会在文本模式启动时运行
  • 再次强调,不能在 bash 中运行,因此必须避免 bashisms。

使用适合您需要的方法。

答案3

除了其他答案之外,您还可以将启动(超级用户)命令放入/etc/rc.local

答案4

只需将命令添加到/etc/rc.local。它会在启动过程结束时执行一次。确保以错误代码 0 退出。

(0)asus-romano:~/PDF% cat /etc/rc.local
#!/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.

exit 0

我从……嗯……1989 年的 Ultrix 开始就一直在其他电脑上使用这个。您必须确保您的脚本在以 root 身份调用且没有图形界面的情况下工作。测试它的一种方法是在 root shell 中从虚拟控制台(Ctrl-Alt-F1,Ctrl-Alt-F7 返回图形环境)运行它(sudo -i)。

请注意,该 shell 中的错误命令可能会彻底破坏您的系统。

相关内容