如何在重启一分钟后执行系统命令(Linux)?

如何在重启一分钟后执行系统命令(Linux)?

是否可以mount在系统重启后运行一定时间的系统命令?

我的问题是,我/etc/fstab在 Linux(Ubuntu)虚拟机中有一个用于挂载主机磁盘的条目。由于加载内核模块时出现一些时间问题,直接挂载不起作用。因此,我使用了一个noauto选项,并在中fstab添加了一行。/etc/rc.localmount /some_disk

这在 Ubuntu (12.04 和 14.04) 上曾经有效,但现在我切换到了 Lubuntu。上面的方法不再有效。我猜可能是因为 Lubuntu 重启速度更快,而且rc.local执行得早。顺便说一句,我验证了其他命令rc.local执行正常。并且在系统启动后执行mount /some_disk时有效。sudo

所以我想知道如何mount /some_disk在脚本中推迟rc.local,比如说重启后 1 分钟?

注意:我可以做

sudo mount /some_disk

重启后几秒内成功(GUI 已启动)。

答案1

是的,这是可能的。只需创建一个初始化脚本并将其放入即可/etc/init.d/

然后通过以下命令使用不同的运行级别注册脚本:

update-rc.d <scriptname> defaults 99 01 

99 表示它是在启动过程的最后被调用。

复杂的守护进程脚本看起来像/etc/init.d/skeleton

但是,由于您的脚本根本不应该是一个守护进程,因此以下脚本应该可以工作。

#!/bin/sh

case "$1" in
  start)

    sleep 60
    # your code

    ;;
esac

quit 0

答案2

@D Schlachter 的回答是个好主意,但缺乏以 root 身份执行命令的要点。不过,您可以使用 /etc/crontab 中的系统范围 crontab 或 root 的 crontab,

sudo crontab -e

请注意这些文件之间的语法差异,因为系统范围的 crontab 需要为将要执行命令的用户提供一个额外的列。

@reboot root sleep 60; mount /some_disk

答案3

您可以使用cron。将此行添加到您的 crontab ( crontab -e):

@reboot sleep 60 ; mount /some_disk

[1] [2]

相关内容