如何通过命令行让less查看敏感命令输出后5分钟自动退出?
实现less会话自动5分钟退出的方案
当然有简单的命令行方式可以满足你的需求!针对通过管道传递文本给less、并让它5分钟后自动退出的场景,这里有两种实用方案:
方案1:使用timeout命令(推荐)
这是最简洁可靠的方法,timeout是专门用来限制进程运行时间的工具,现代Linux发行版和大部分类Unix系统都自带它。
命令格式如下:
cat your_sensitive_file.txt | timeout 300 less
300代表300秒,也就是5分钟,你可以根据需要调整这个数值- 当时间到后,
timeout会自动终止less进程,而less因为使用alternate screen,退出时会自动清除屏幕上的敏感内容,完全符合你的场景需求
如果你用的是macOS,系统默认没有
timeout,可以先通过Homebrew安装GNU coreutils:brew install coreutils,然后用gtimeout代替timeout即可。
方案2:结合sleep和kill手动实现
如果你的系统没有timeout工具,也可以用后台进程定时杀死less的方式实现:
# 启动less并获取其PID cat your_sensitive_file.txt | less & LESS_PID=$! # 后台启动定时进程,5分钟后杀死less,忽略PID不存在的错误(比如你手动提前退出了) (sleep 300 && kill $LESS_PID 2>/dev/null) &
这个方案的原理是先启动less并记录它的进程ID,然后后台运行一个sleep进程,时间到后执行kill命令终止less。2>/dev/null是为了避免在你手动提前退出less后,kill命令因为找不到PID而输出错误信息。
额外提示
不管用哪种方案,less的alternate screen特性都会在进程终止后自动清除屏幕内容,不用担心敏感信息残留。如果你需要less的其他参数(比如显示行号-n、高亮搜索-i等),直接加在less后面即可,比如:
cat your_sensitive_file.txt | timeout 300 less -n -i
内容的提问来源于stack exchange,提问作者k-h
相关产品推荐
相关产品推荐

