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

Ric*_*ard 5 startup configuration

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

Rin*_*ind 5

cron可以在这里提供帮助。

除了在一分钟、一小时、星期几、一个月等上开始一些事情之外,它还有一些特殊的操作:

@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 测试脚本 
回声“有效”>/tmp/testing
chmod 775 测试脚本

现在重新启动......这是一个工作示例:

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


Mes*_*ion 2

当我需要添加“run-once”命令时,我使用两个地方:

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

优点:

  • 即使不使用 GDM/X11/图形服务器,它也可以工作。这意味着它将与 SSH 和文本模式登录一起使用
  • 根据需要,当 gnome 终端启动时,不会对其进行评估。仅在登录时
  • 使用用户权限执行,其安全性同时允许完全访问个人脚本。
  • 所有安装完成后运行,以便整个文件系统可用。

缺点:

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

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

优点:

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

缺点:

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

使用适合您需要的方法。