我正在编写一个bash脚本来自动解密文件以进行编辑,并在文件关闭后对其进行加密。文件类型可以是任何:纯文本,办公文档等。我在Linux Mint与Mate。
我陷入困境:无法可靠地检测文件是否在应用程序中关闭,以便脚本可以继续加密并删除解密版本。
脚本的第一个版本只是将vim与文本文件一起使用。脚本直接调用它,直到vim关闭才进一步。现在我希望能够使用其他文件,我尝试了以下方法:
xdg-open:在调用与文件类型关联的应用程序后立即退出。因此脚本继续并没有好处。
xdg-open用于调用关联应用程序的修改函数:在当前脚本中运行它,现在我看到程序退出。仅在应用程序尚未运行时才起作用。如果有,则完成新进程并继续脚本。
所以我现在要做的就是以某种方式观察该文件已在运行的应用程序中关闭。目前正在尝试使用pluma / gedit和inotifywait。它也不起作用 - 文件打开后立即检测到 CLOSE_NOWRITE,CLOSE 事件。
是否可以在没有针对不同应用的特定挂钩的情况下检测到这种情况?可能是一些X钩?
谢谢。
答案 0 :(得分:0)
您可以使用lsof来确定某个进程是否打开了文件:
myFile="/home/myUser/myFile"
/usr/sbin/lsof "$myFile" | grep "$myFile"
您可以使用1秒循环并等待lsof响应为空。我使用它来帮助防止脚本打开仍在编写或下载的新发现的文件。
并非所有进程在使用文件时都会打开文件。例如,vim保持打开一个临时文件(/home/myUser/.myFile.swp),并且只能在加载或保存时打开真实文件。
答案 1 :(得分:0)
你可能会这样做。
decrypt "TheFile"&
pluma "TheFile"
encrypt "TheFile"
一行末尾的&
将执行该行,然后通过Pluma。该脚本将暂停,直到pluma关闭。
如果您发布脚本,我可以提供更多帮助。