我的编程空间,编程开发者的网络收藏夹
学习永远不晚

防止shell脚本重复执行的代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

防止shell脚本重复执行的代码

例如,要求脚本只能顺序访问某个资源,例如磁盘文件等,就可以参考下面的实现。


#!/bin/bash
#
# file locking using bash.
# ver 0.1.6
#
# author : malundao ( malundao@sina.com )
# date : 2011-08-31
# ref : http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2005-09/0472.html
#
# note:
# shflock_cleanhook() is a user defined function to clean up user-specific sth.
#
# /path/to/lock/. note; directory, not a file.
# should be modified
LOCKPATH="/tmp"
cleanup() {
shflock_cleanhook
cd $LOCKPATH
[ -e lock.pid ] || exit
read pid >/dev/null 2>&1 <lock.pid
if [ -n "$pid" ]; then
if [ "$pid" == "$$" ]; then
rm -f lock.$pid
rm -f lock.pid
exit
fi
fi
exit
}
# trap EXIT ?
trap 'cleanup' HUP INT TERM
getlock() {
oldpath=`pwd`
cd $LOCKPATH
while
echo $$ > lock.$$
[ -e lock.pid ]
do
rm lock.$$
read pid >/dev/null 2>&1 <lock.pid
if [ -n "$pid" ]; then
if [ -e /proc/$pid ]; then
cd $oldpath
return 1 # Lock is taken by others
else
#unsafe: rm -f lock.$pid
echo WARN: please delete stale lock.pid by HAND.
return 2
fi
else
# sleep some seconds,then back to 'while' loop
# 11 is a prime number, $$ as a random.
echo sleep $(( $$ % 11 ))
sleep $(( $$ % 11 ))
fi
done
# 'ln -s' is an atom op.
ln -s lock.$$ lock.pid >/dev/null 2>&1
if [ $? -eq 0 ]; then
cd $oldpath
return 0 # We got the lock
else
[ -e lock.pid ] || echo WARN: please delete hanging lock.pid by HAND.
cd $oldpath
return 3 # Lock is probably taken by others.
fi
}
putlock () {
oldpath=`pwd`
cd $LOCKPATH && rm -f lock.$$ lock.pid
cd $oldpath
}
## test
shflock_cleanhook() {
echo i'm a hook.
}
while true; do
while ! getlock; do
#echo wait a second...
sleep 1
done
echo [$$] `date` ,now hold lock for 3 seconds...
sleep 3
#echo putlock
putlock
sleep 1 # yield
done

防止脚本多次执行(一)

while [ `ps x |grep -v grep|grep filename.sh|wc -l` -gt 0 ];
do
exit
done

把内容放在脚本最上面

filename.sh 替换为你要监控的脚本名字
还有一种方法是 死循环 可以根据不同的环境,不同的脚本内容,使用的方法也同步,方法很简单日后在写出来

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

防止shell脚本重复执行的代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

防止shell脚本重复执行的代码

例如,要求脚本只能顺序访问某个资源,例如磁盘文件等,就可以参考下面的实现。#!/bin/bash## file locking using bash.# ver 0.1.6## author : malundao ( malundao@si
2022-06-04

shell脚本如何防止重复执行

shell脚本如何防止重复执行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:#!/bin/bash## file locking using bash
2023-06-09

Shell脚本避免重复执行的方法

很多用cron定时执行的shell脚本可能会由于各种原因执行很久,会有必要在运行的时候先检查一下自身是否还在运行。本文提供的linux shell脚本用以检查以命令sh ...来执行的shell脚本。要对其他东西进行唯一性检查,可以稍微修改
2022-06-04

Shell 脚本中重复执行如何解决

Shell 脚本中重复执行如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。简介flock 是文件锁命令,它可以保证Linux系统上进程之间安全的访问临界资源,在shell
2023-06-15

Shell脚本中怎么避免重复执行

这篇文章给大家介绍Shell脚本中怎么避免重复执行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:# 检查通过sh命令执行的shell脚本是不是还在执行当中,避免重复执行. # 把这段代码放在需要保证唯一性的程
2023-06-09

如何解决 shell 脚本重复执行的问题

简介flock 是文件锁命令,它可以保证linux系统上进程之间安全的访问临界资源,在shell脚本中,可以用来控制逻辑的互斥性 实例1现有脚本 a.sh, 内容如下#!/bin/bashecho "[`date +'%Y-%m-%d %H
2022-06-04

自动重启服务的shell脚本代码

#!/bin/bash if [ ! -f /tmp/down_count ];then echo "0" > /tmp/down_count fi curl -I tomcat-host -o "/tmp/status" >/dev/nu
2022-06-04

java定时任务防止重复执行的方法是什么

在Java中,可以使用`ScheduledExecutorService`或`Timer`来创建定时任务。如果要防止定时任务重复执行,可以通过以下方法之一实现:1. 使用`ScheduledExecutorService`:- 使用`sch
2023-08-25

停止使用非版本控制的可执行代码

local_settings这种反模式它在我的笔记本上运行良好!但是我不会犯这种错误!如何处理环境特有变量https://www.pydanny.com/using-executable-code-outside-version-contr
2023-01-31

shell脚本批量复制及执行命令的示例详解

平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,但是如果是一批机器,几十或几百台,要是一台一台去安装环境,光是输入同一的命令,估计你自己都想吐,所有聪明的人会想一些偷懒的办法,确实可以找到一些省时省力的方法,比如写一个批量
2022-06-04

shell脚本运行5秒后自动退出的代码

#!/bin/bash#name show_status.sh#echo $$ > /var/run/show_status.log#sleep 5 && kill `cat /var/run/show_status.log` &#star
2022-06-04

shell脚本实现同时多台远程主机执行命令的代码分享

实现需求在对单台机器做操作时我们会用“ssh ip”的方式登录到机器上,可以写这样一个工具vssh ip1,ip2,…ipn 来模拟登录到n 台服务器,登录后所有操作相当于同时对n 台服务器生效。 实现方法首页要确保可以通过本地公钥无密码登
2022-06-04

把文件复制N份的2个Shell脚本代码

测试时需要大量文件,所以写了脚本进行拷贝。有规律的文件名利于引用。#!/bin/sh# file name : batchcp.sh# author: zhouhh# Email: ablozhou@gmail.com# Date : 20
2022-06-04

shell脚本中批量复制及执行命令的示例分析

这篇文章主要介绍了shell脚本中批量复制及执行命令的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,
2023-06-09

如何设置CentOS系统以防止恶意代码的自动执行

为了防止恶意代码的自动执行,您可以采取以下步骤来设置CentOS系统:1. 及时更新系统:定期更新系统软件和补丁,以确保系统安全性。2. 安装防病毒软件:安装可信赖的防病毒软件,并定期更新病毒数据库。3. 禁用不必要的服务和端口:检查系统上
2023-10-10

如何设置CentOS系统以防止恶意代码的执行和传输

要设置CentOS系统以防止恶意代码的执行和传输,可以采取以下措施:1. 更新系统:及时安装最新的安全补丁和更新,以修补已知的漏洞。2. 安装防火墙:配置防火墙以限制网络访问,只允许必要的服务和端口开放,并阻止潜在的恶意流量。3. 安装安全
2023-10-10

如何设置CentOS系统以防止恶意代码的下载和执行

以下是一些设置CentOS系统以防止恶意代码的下载和执行的建议:1. 安装杀毒软件:在CentOS系统上安装可信赖的杀毒软件,定期更新病毒数据库,及时检测和清除恶意代码。2. 更新系统:及时更新CentOS系统,包括操作系统和软件的补丁,以
2023-10-12

编程热搜

目录