linux删除文件退出,在Linux中用于在移动或删除文件时使`tail -f`退出的bash脚本
目前删除,移动或重命名在其上运行tail -f的文件什么都不做,我希望它能够中止.我已经阅读了手册页,似乎-f应该在文件移动时中止,-F将跟随文件,但在Mac OS X上似乎-f和-F是相同的.如何编写一个bash脚本,在文件移动后使tail -f完全退出?
>在
Linux上,你可以使用tail –follow = name(而不仅仅是-f,相当于–follow = descriptor)来实现你想要的,但是只有文件是DELETED而不是移动 – 一旦文件删除,报告错误消息并退出尾部(代码1);遗憾的是,相比之下,如果文件仅仅是MOVED(重命名),则tail不会退出 – 需要一个程序化的解决方案.
>在OSX上,您始终需要一个程序化解决方案 – 无论文件是移动还是删除.
一旦目标文件不再存在(以其原始名称)退出尾部的bash脚本 – 来自@ schellsan自己答案的更强大的脚本表达式:
#!/usr/bin/env bash
tail -f "$1" & # start tailing in the background
while [[ -f $1 ]]; do sleep 0.1; done # periodically check if target still exists
kill $! 2>/dev/null || : # kill tailing process, ignoring errors if already dead
>正确处理需要引用的文件名(例如,带有嵌入空格的名称).
>通过在文件存在检查之间休眠来防止创建紧密循环 – 根据需要调整睡眠持续时间;警告:一些平台只支持积分秒.
如果需要更强大的稳定性,这里有一个版本:
>通过退出陷阱杀死后台进程,以确保它被杀死,无论脚本本身如何退出(通常,或者说,通过Control-C).
>如果发现后台进程不再存在,则退出脚本.
#!/usr/bin/env bash
# Set an exit trap to ensure that the tailing process
# - to be created below - is terminated,
# no matter how this script exits.
trap '[[ -n $tailPid ]] && kill $tailPid 2>/dev/null' EXIT
# Start the tailing process in the background and
# record its PID.
tail -f "$1" & tailPid=$!
# Stay alive as long as the target file exists.
while [[ -f $1 ]]; do
# Sleep a little.
sleep 0.1
# Exit if the tailing process died unexpectedly.
kill -0 $tailPid 2>/dev/null || { tailPid=; exit; }
done
linux删除文件退出,在Linux中用于在移动或删除文件时使`tail -f`退出的bash脚本相关推荐
- 解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是“本机文件路径”,而不是“http路径”问题
解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是"本机文件路径",而不是"http路径"问题 一·问题描述: 二·错误原因: 三·解决方法: 方 ...
- Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)
在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...
- linux 模块 掉线重拨,arm中实现pppd连接GPRS上网的相关笔记,含GPRS自动拨号脚本(真正的实时监控,断线自动重拨)...
在嵌入式Linux下GPRS上网方案 笔记1 硬/软件环境 基于S3C2410的嵌入式系统,COM1连接PC,COM2连接SIM300 GPRS模块. 该系统运行在Linux 2.6.14操作系统下, ...
- 计算机无法删除ie,ie浏览器图标删除不了怎么办 Win7中IE浏览器图标无法删除解决方法...
IE是Windows中自带的默认浏览器,不过绝大数的用户还是偏向于第三方浏览器,我们在使用第三方浏览器之后,就会卸载ie浏览器.那么ie浏览器图标删除不了怎么办?下面装机之家分享一下Win7中IE浏览 ...
- oracle大表如何快速删除一列,Oracle 对表中的记录进行大批量删除
Oracle 对表中的记录进行大批量删除数量时,常常采用分批删除,逐次提交.其目的大概有三个原因: Oracle 对表中的记录进行大批量删除数量时,常常采用分批删除,逐次提交.其目的大概有三个原因: ...
- ise生成msk文件的用处_ISE中上载程序出错,msk文件缺失有关问题
ISE中下载程序出错,msk文件缺失问题 原文:http://cathyun.spaces.live.com/blog/cns!7C9B5AD7F583967!1291.entry 今天实验调试时之前 ...
- python同时打开两个文件_在python中使用with打开多个文件的方法
虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说,这里记录一下 ...
- 计算机设备图标怎么删除,电脑设备和驱动器中没用的图标怎么删除? 我的电脑中手机...
误装2345手机助手后,虽然卸载但是仍然有烦人的我的手机图标,此经验用于帮助删除 1.按win+r 找到"运行" 2.输入"regedit"打开注册表 3.打开 ...
- 计算机控制面板中无法删除程序,电脑在控制面板中无法打开添加或删除程序
如下所示我们在xp系统中进入到电脑中的"控制面板"你会发现找不到"添加或删除程序"域者找到了也无法打开"添加或删除程序"选项后报错. 打开& ...
最新文章
- Python3模块Crypto改为pycryptodome
- 工作中遇到的懒加载问题
- CentOS7.9关闭SELinux
- 算术基本定理(维基百科)
- Oauth 2.0概述
- CodeVS 1300 文字排版 线性DP
- 关于选择排序的优化——同时找出最小值与最大值
- 使用WebRTC实现电脑与手机通过浏览器进行视频通话
- 测试电梯的测试用例_测试开发工作者日记:2020.12.24
- 支持5G的iPhone SE Plus或将于明年面世
- Android画笔自定义控件三要素
- Ubuntu 20.04 LTS 发布最终 Beta 版本
- 传智播客python2018_Python视频教程下载-2018传智播客Python视频教程下载-西西软件下载...
- python写标准api_用python写api
- “5G+”发展论坛暨“金帽子”年度盛典圆满结束,共同探讨5G背景下网安技术发展和前沿趋势
- Linux学习——linux网络配置、修改主机名、网络映射、远程连接工具XShell的使用(超详细)
- speedoffice表格如何快速复制整张工作表
- 微信小程序地图篇(腾讯地图)
- 从感性和理性的角度谈APS系统
- 海康威视监控云存储服务器,监控设备,云存储服务器,安防监控—年轻人安防官网...
热门文章
- IDEA中的maven工程Java未被识别的解决方法
- IDEA如何重新刷新pom.xml文件重新下载
- jsp中文件下载的实现
- Java-递归算法思想
- Java函数式接口看这一篇就够了
- python 天气预报 mysql_Python+PyQt5+MySQL实现天气管理系统
- 船舶定位实时查询系统_真趣:IDC机房人员定位系统,位置实时监测,巡检路线智能规划...
- bgp协议 怎么知道相邻路由的ip地址_BGP的名词解释
- 为什么要进行字节对齐?
- linux安装磁盘分区设置,Linux安装与磁盘分区.doc