目前删除,移动或重命名在其上运行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脚本相关推荐

  1. 解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是“本机文件路径”,而不是“http路径”问题

    解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是"本机文件路径",而不是"http路径"问题 一·问题描述: 二·错误原因: 三·解决方法: 方 ...

  2. Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)

    在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...

  3. linux 模块 掉线重拨,arm中实现pppd连接GPRS上网的相关笔记,含GPRS自动拨号脚本(真正的实时监控,断线自动重拨)...

    在嵌入式Linux下GPRS上网方案 笔记1 硬/软件环境 基于S3C2410的嵌入式系统,COM1连接PC,COM2连接SIM300 GPRS模块. 该系统运行在Linux 2.6.14操作系统下, ...

  4. 计算机无法删除ie,ie浏览器图标删除不了怎么办 Win7中IE浏览器图标无法删除解决方法...

    IE是Windows中自带的默认浏览器,不过绝大数的用户还是偏向于第三方浏览器,我们在使用第三方浏览器之后,就会卸载ie浏览器.那么ie浏览器图标删除不了怎么办?下面装机之家分享一下Win7中IE浏览 ...

  5. oracle大表如何快速删除一列,Oracle 对表中的记录进行大批量删除

    Oracle 对表中的记录进行大批量删除数量时,常常采用分批删除,逐次提交.其目的大概有三个原因: Oracle 对表中的记录进行大批量删除数量时,常常采用分批删除,逐次提交.其目的大概有三个原因: ...

  6. ise生成msk文件的用处_ISE中上载程序出错,msk文件缺失有关问题

    ISE中下载程序出错,msk文件缺失问题 原文:http://cathyun.spaces.live.com/blog/cns!7C9B5AD7F583967!1291.entry 今天实验调试时之前 ...

  7. python同时打开两个文件_在python中使用with打开多个文件的方法

    虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说,这里记录一下 ...

  8. 计算机设备图标怎么删除,电脑设备和驱动器中没用的图标怎么删除? 我的电脑中手机...

    误装2345手机助手后,虽然卸载但是仍然有烦人的我的手机图标,此经验用于帮助删除 1.按win+r 找到"运行" 2.输入"regedit"打开注册表 3.打开 ...

  9. 计算机控制面板中无法删除程序,电脑在控制面板中无法打开添加或删除程序

    如下所示我们在xp系统中进入到电脑中的"控制面板"你会发现找不到"添加或删除程序"域者找到了也无法打开"添加或删除程序"选项后报错. 打开& ...

最新文章

  1. Python3模块Crypto改为pycryptodome
  2. 工作中遇到的懒加载问题
  3. CentOS7.9关闭SELinux
  4. 算术基本定理(维基百科)
  5. Oauth 2.0概述
  6. CodeVS 1300 文字排版 线性DP
  7. 关于选择排序的优化——同时找出最小值与最大值
  8. 使用WebRTC实现电脑与手机通过浏览器进行视频通话
  9. 测试电梯的测试用例_测试开发工作者日记:2020.12.24
  10. 支持5G的iPhone SE Plus或将于明年面世
  11. Android画笔自定义控件三要素
  12. Ubuntu 20.04 LTS 发布最终 Beta 版本
  13. 传智播客python2018_Python视频教程下载-2018传智播客Python视频教程下载-西西软件下载...
  14. python写标准api_用python写api
  15. “5G+”发展论坛暨“金帽子”年度盛典圆满结束,共同探讨5G背景下网安技术发展和前沿趋势
  16. Linux学习——linux网络配置、修改主机名、网络映射、远程连接工具XShell的使用(超详细)
  17. speedoffice表格如何快速复制整张工作表
  18. 微信小程序地图篇(腾讯地图)
  19. 从感性和理性的角度谈APS系统
  20. 海康威视监控云存储服务器,监控设备,云存储服务器,安防监控—年轻人安防官网...

热门文章

  1. IDEA中的maven工程Java未被识别的解决方法
  2. IDEA如何重新刷新pom.xml文件重新下载
  3. jsp中文件下载的实现
  4. Java-递归算法思想
  5. Java函数式接口看这一篇就够了
  6. python 天气预报 mysql_Python+PyQt5+MySQL实现天气管理系统
  7. 船舶定位实时查询系统_真趣:IDC机房人员定位系统,位置实时监测,巡检路线智能规划...
  8. bgp协议 怎么知道相邻路由的ip地址_BGP的名词解释
  9. 为什么要进行字节对齐?
  10. linux安装磁盘分区设置,Linux安装与磁盘分区.doc