Linux system 定时及延时任务

                                   系统中的定时与延时



1.at

基本形式

at    time

>ls   /mnt/

>ctrl  +  D

在设置时间执行相应任务



at   -l                           #列出延迟任务id


       -r     任务id         #删除此id的任务


       -m                       #让无输出的命令产生邮件


       -M                        #让有输出的命令不产生邮件

       -c     任务id         #查看此id延迟任务的执行动作


       -f      文件            #用文件内记录的命令作为延迟任务的执行命令


##at命令的使用控制##

默认系统中全部用户都有执行at命令的权力

1)用户黑名单

默认情况下系统中是存在用户黑名单的

/etc/at.deny                 #用户黑名单,此名单默认为空,并且在白名单不存在时生效

用户黑名单中添加student用户,导致该用户无法执行at命令


2)用户白名单

默认情况下系统中不存在at的白名单,但是当白名单出现,系统除名单中的用户及root用户,其他用户均不能执行at命令

touch /etc/at.allow       #建立用户白名单,当白名单出现,黑名单失效

白名单中添加westos用户,该用户可执行at命令


而student不在白名单中,所以无法执行at


3.cron


1)cron这个程序是由crond.service服务提供

2)写入出程序的时间和事件是永久保存的

##cron设定方式##

crontab -e -u  用户名称(可以不写)

分钟       小时    天      月       周      事件 

58             06      *        *         *         touch /mnt/file               #每天6:58分在/mnt/中建立file文件


3)黑名单

/etc/cron.deny           #用户黑名单,此名单默认为空,并且在白名单不存在时生效

4)白名单

/etc/cron.allow           #当此名单出现,除root用户及名单中的用户其他用户不能执行cron命令

touch /etc/cron.allow               #建立白名单

默认情况下的student用户可执行cron

白名单中添加westos用户,该用户可执行cron

而白名单中无student用户,所以无法执行cron


##文件方式定义crontab##

vim /var/spool/cron/用户名称         #以某个用户身份执行cron

<分>        <时>        <天>       <月>        <周>         < 动作>

vim /etc/cron.d/文件                #设定多个用户身份执行cron

<分>        <时>        <天>       <月>        <周>         < 动作>

vim /etc/cron.d/cron.sh      #脚本编写执行cron



4.临时文件的限时删除

vim /usr/lib/tmpfiles.d/名称.conf                 #临时文件的配置文件

文件中表示若建立一个临时文件,该文件在20s内是可删除的,超时后无法删除

创建临时文件并测试在设定时间内和设定时间外的区别


<think>好的,我需要帮助用户在Linux中配置延时启动。首先,我得回顾一下用户提供的引用资料,看看有哪些方法。用户提到了四个引用,分别涉及定时器、at命令、超时控制以及服务配置中的延时启动。 首先,用户的问题是关于如何设置延时启动,所以应该考虑不同的方法。根据引用[2],可以用at命令结合/etc/rc.local来实现延迟任务。引用[4]提到在systemd服务中使用ExecStartPre和sleep命令来延迟启动服务。另外,引用[3]提到了使用timeout命令来控制超时,但可能更适用于控制进程运行时间而非启动延迟。 接下来,我需要组织这些方法,分步骤说明。可能的方法有:使用systemd服务的配置添加延时,使用at命令安排延迟任务,在启动脚本中加入sleep命令,以及使用timeout命令来限制启动时间。不过timeout可能不是直接用于延迟启动,而是控制执行时间,所以需要确认是否适用。 然后,每个方法需要具体的配置示例。比如,在systemd服务中添加ExecStartPre=/bin/sleep 6,这样服务启动前会等待6秒。对于at命令,可以编写脚本放到rc.local中,使用at now + 5 minutes来延迟执行任务。在启动脚本中直接加入sleep也是一个简单的方法。 需要确保步骤清晰,语法正确,比如在systemd文件中正确放置ExecStartPre,或者在crontab中使用@reboot结合sleep。同时要注意权限问题,比如rc.local需要可执行权限。 可能的相关问题包括如何检查延迟是否生效,不同方法的优缺点比较,或者如何处理依赖服务的延迟启动。比如,用户可能想知道如果服务之间有依赖,如何调整启动顺序和延迟时间。 最后,确保引用正确的来源,每个方法后面添加对应的引用标识,比如使用at命令的部分引用[2],systemd的部分引用[4]等。同时,避免使用用户不可见的格式,保持回答自然。</think>### Linux延时启动配置方法详解 在Linux系统中实现延时启动主要有以下四种方法,根据应用场景选择合适方案: $$ \text{延时时间} = \text{基准时间} + \Delta t \quad (\Delta t \geq 0) $$ #### 一、Systemd服务延时(推荐方案) 1. 编辑服务配置文件 ```bash sudo vi /etc/systemd/system/your_service.service ``` 2. 添加延时参数 ```ini [Service] ExecStartPre=/bin/sleep 6 # 启动前休眠6秒[^4] ExecStart=/path/to/your_program ``` 3. 重载配置生效 ```bash sudo systemctl daemon-reload sudo systemctl restart your_service ``` #### 二、at命令定时启动 1. 创建开机启动脚本 ```bash sudo vi /etc/rc.local ``` 2. 添加延时执行命令 ```bash echo "/path/to/your_script.sh" | at now + 5 minutes # 延迟5分钟执行[^2] ``` 3. 确保rc.local可执行 ```bash sudo chmod +x /etc/rc.local ``` #### 三、Shell脚本休眠控制 在启动脚本开头添加: ```bash #!/bin/bash sleep 10 # 延迟10秒 /path/to/your_program ``` #### 四、Crontab定时任务 ```bash @reboot sleep 300 && /path/to/your_script.sh # 开机5分钟后执行[^1] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值