MLS*_*LSC 6 bash process kill signals
我有一个 bash 脚本做了很多事情,称为script.sh:
#!/bin/bash
#It
#Is
#Doing
#Things
Run Code Online (Sandbox Code Playgroud)
有没有办法可以从自身内部获取此脚本的进程 ID,然后在 5 分钟后将其杀死?
喜欢:
#!/bin/bash
#Get pid of script.sh here, start a 5 minute timer and kill the script after time runs out
#It
#Is
#Doing
#Things
Run Code Online (Sandbox Code Playgroud)
dev*_*ull 20
作为timeoutGNU coreutils 一部分的实用程序为您完成:
timeout 5m bash script.sh
Run Code Online (Sandbox Code Playgroud)
将在执行 5 分钟后终止脚本。
Hau*_*ing 14
你得到了 PID PID=$$。
使用命令可能最容易实现您想要的timeout。
但是您也可以运行后台进程:
(sleep $TIMEOUT && kill "$PID") &
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您总是希望脚本在 5 分钟后超时,您可以简单地在这样的后台进程中使用一个块。如果Ctrl+C在运行时使用,后台进程也会终止:
#!/bin/bash
{
sleep 5m
kill $$
} &
while true
do
date
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
您可以将循环更改为:
#!/bin/bash -
SECONDS=0
while ((SECONDS < 5*60))
do
echo "line printed"
done
Run Code Online (Sandbox Code Playgroud)
或者插入((SECONDS < 5*60)) || exit到你最深的循环中。
SECONDSin ksh, zshandbash是一个每秒递增的特殊变量。
| 归档时间: |
|
| 查看次数: |
32240 次 |
| 最近记录: |