shell 每秒 后台执行
时间: 2023-09-02 09:11:58 浏览: 62
要让一个命令在后台持续执行,可以使用以下方式:
1. 使用 & 符号将命令放到后台执行:
```
command &
```
2. 使用 nohup 命令,使命令在后台运行,并且不受终端关闭等影响:
```
nohup command &
```
如果希望每隔一定时间执行一次后台命令,可以使用 cron 任务。可以编辑 /etc/crontab 文件并添加一个新的任务,例如:
```
* * * * * root command
```
以上命令表示每分钟都执行一次 command 命令。具体可以参考 cron 的使用文档。
相关问题
每隔10s批量执行命令 一共执行24小时得shell脚本
好的,以下是一个基于Bash的脚本实现每隔10秒执行命令,共执行24小时:
```bash
#!/bin/bash
# 执行命令的函数
function run_command() {
# 在这里输入您要执行的命令
your_command_here
}
# 设置执行时间为24小时
endtime=$((SECONDS + 60 * 60 * 24))
# 每隔10秒执行一次命令
while [ $SECONDS -lt $endtime ]; do
run_command
sleep 10
done
```
将 "your_command_here" 替换为您要执行的命令,并保存为一个Shell脚本,例如 "batch_command.sh"。然后在命令行中运行以下命令启动定时任务:
```
chmod +x batch_command.sh
./batch_command.sh &
```
这将在后台运行脚本,并且每隔10秒执行一次命令,直到达到24小时的时间限制。
shell脚本中,执行nohup后,执行脚本需要手动退出,怎么解决
在Shell脚本中,如果使用`nohup`命令执行程序使其在后台持续运行并忽略输入挂断信号,通常你需要提供一个退出机制以便于在需要的时候停止脚本。一种常见的做法是在脚本内部设置循环或条件判断,例如使用`while true`或监听特定信号。
例如:
```bash
#!/bin/bash
# 设置脚本无限循环,直到接收到特定信号(如SIGINT)
while :; do
# 你的脚本代码...
sleep 60 # 每隔60秒执行一次任务
done
# 接收 SIGINT 信号(Ctrl+C)并退出脚本
trap "exit" INT
# 或者,你可以监听某个文件是否存在,当文件不存在时退出
# while [ -e /path/to/your/file ]; do ... done
```
在这个例子中,可以使用`trap 'exit' INT`捕获并响应`SIGINT`(通常是键盘中断)。如果你希望基于文件的存在与否来控制脚本,只需检查文件是否还存在,并在文件消失时退出。
如果你想在用户通过某种方式(比如另一个脚本或命令)通知时优雅地停止脚本,也可以考虑创建一个共享的通信管道或者使用消息队列系统(如Unix的Docker信号、socket连接等)。
阅读全文