相关疑难解决方法(0)

确保只运行一个Bash脚本实例的最佳方法是什么?

确保只有给定脚本的一个实例运行的最简单/最好的方法是什么 - 假设它是Linux上的Bash?

目前我正在做:

ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
Run Code Online (Sandbox Code Playgroud)

但它有几个问题:

  1. 它把检查放在脚本之外
  2. 它不允许我从单独的帐户运行相同的脚本 - 我有时会这样.
  3. -C 仅检查进程名称的前14个字符

当然,我可以编写自己的pidfile处理,但我觉得应该有一个简单的方法来实现它.

linux bash lockfile pid flock

100
推荐指数
4
解决办法
10万
查看次数

如何防止脚本同时运行?

我想阻止我的脚本一次运行多次.

我目前的做法是

  • 创建一个包含正在运行的进程的pid的信号量文件
  • 读取文件,如果我的进程ID不在它退出(你永远不知道......)
  • 在处理结束时,删除该文件

为了防止进程挂起,我设置了一个cron作业,定期检查文件是否超过了最大允许的运行时间,如果文件仍然在运行,则会终止该进程.

是否存在我正在杀死错误进程的风险?

有没有更好的方法来执行这个整体?

bash semaphore

71
推荐指数
0
解决办法
5万
查看次数

bash flock:为什么200?

关于那个线程: bash flock:如果无法获取锁定则退出

如果有人能向我解释'200'代表什么,我将不胜感激.

我已经阅读了关于flock的内容,如果要指定文件描述符,似乎有200个,但这个数字有什么好处呢?

bash flock

31
推荐指数
1
解决办法
2万
查看次数

bash脚本功能中的并发或锁定访问

有谁知道如何在bash脚本中锁定函数?我想做一些类似Java的事情(例如同步),以确保保存在受监控文件夹中的每个文件都试图使用Submit功能。

我的脚本摘录:

(...)

ON_EVENT () { local date = $1 local time = $2 local file = $3 sleep 5 echo "$date $time New file created: $file" submit $file }

submit () { local file = $1 python avsubmit.py -f $file -v python dbmgr.py -a $file }

if [ ! -e "$FIFO" ]; then mkfifo "$FIFO" fi

inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' "$DIR" > "$FIFO" & INOTIFY_PID=$!

trap "on_exit" 2 3 15

while read date …

Run Code Online (Sandbox Code Playgroud)

bash shell concurrency function

2
推荐指数
1
解决办法
3562
查看次数

标签 统计

bash ×4

flock ×2

concurrency ×1

function ×1

linux ×1

lockfile ×1

pid ×1

semaphore ×1

shell ×1