首页 / LINUX / 如何在linux上序列化命令执行?
如何在linux上序列化命令执行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在linux上序列化命令执行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1163字,纯文字阅读大概需要2分钟。
内容图文
我想确保系统中的任何常规用户一次只能运行一个脚本.可以有多个用户登录,并且每个用户只能在其他用户的任何运行命令完成后才能运行命令.
很久以前在UNIX上,我使用批处理命令和一个适当的“仅一个任务”队列定义来序列化脚本执行.它解决了许多锁管理问题(它只需要在脚本中设置一个简单的超时).
现在在Linux上,批处理命令的执行方式不同,每分钟运行一个任务,并行运行任务,直到达到1.5个负载平均值.
我创建了自己的锁管理shell库来序列化执行,但我想知道是否有一个标准命令来执行此操作.
解决方法:
羊群非常适合这个.您可以在shell脚本的包装器中使用flock,在命令行中使用它,或将其合并到脚本本身中.
关于flock的最好的事情是,当它等待时,它不会在繁忙的循环中等待.
当您的进程退出/ flock退出时,它也会始终清除锁定.
如果进程退出而没有清理(或者如果存在内核崩溃或电源故障,……),则基于原子文件/目录创建的方法可能会被锁定.
使用flock,Linux内核可以进行清理.
从手册,
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
在此表单中,您可以在shell脚本中包装特定的代码块.
或者你可以像这样运行它,
/usr/bin/flock /tmp/lockfile command
如果您不想无限期地阻止/等待,可以指定超时:
-w --timeout <secs> wait for a limited amount of time
或者只使用非阻塞参数:
-n --nonblock fail rather than wait
内容总结
以上是互联网集市为您收集整理的如何在linux上序列化命令执行?全部内容,希望文章能够帮你解决如何在linux上序列化命令执行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。