2013-02-05 9 views
0

파일을 자동으로 해독하여 파일을 자동으로 해독하고 파일을 닫은 후 다시 암호화하는 bash 스크립트를 작성하고 있습니다. 파일 유형은 plain text, office document 등 어떤 것이 될 수 있습니다. 나는 Linux Mint with Mate를 사용 중입니다.자동 암호화/복호화 : 메이트/그놈 어플리케이션에서 파일 감지가 완료됩니다.

막혔습니다. 응용 프로그램에서 파일이 닫혔는지 여부를 안정적으로 감지 할 수 없으므로 스크립트를 다시 암호화하고 해독 된 버전을 제거 할 수 있습니다.

첫 번째 버전의 스크립트는 텍스트 파일과 함께 vim을 사용하기 만했습니다. 스크립트가 직접 스크립트를 호출했는데 vim이 닫힐 때까지 스크립트를 더 이상 사용하지 않았습니다. 이제 다른 파일들과 함께 할 수 있기를 원했기 때문에 다음과 같은 작업을 시도했습니다.

xdg-open : 파일 유형과 관련된 응용 프로그램을 호출 한 직후에 종료됩니다. 따라서 스크립트는 계속되고 좋지 않습니다.

관련 앱을 호출하기위한 xdg-open의 수정 된 기능 : 현재 스크립트 내에서 실행되므로 이제는 프로그램 종료가 표시됩니다. 응용 프로그램이 이미 실행되고 있지 않은 경우에만 작동합니다. 그럴 경우 새 프로세스가 완료되고 스크립트가 계속됩니다.

그래서 지금은 어떻게 든 그 파일이 이미 실행중인 응용 프로그램에서 닫혔다는 것을 보는 것입니다. 현재 플루마늄/gedit 및 inotifywait 실험. 그것은 어느 쪽이든 작동하지 않습니다 - 즉시 파일을 연 후 CLOSE_NOWRITE, CLOSE 이벤트를 감지합니다.

다른 응용 프로그램에 대한 특정 후크없이이를 감지 할 수 있습니까? 아마도 X 후크일까요?

감사합니다.

답변

0

당신은 파일이 프로세스에 의해 열려 있는지 확인 lsof를 사용할 수 있습니다

myFile="/home/myUser/myFile" 
/usr/sbin/lsof "$myFile" | grep "$myFile"  

당신은 1 개 초 루프를 사용하고 lsof의 응답이 비워 질 때까지 기다릴 수 있습니다. 필자는이 스크립트를 사용하여 스크립트가 아직 작성 또는 다운로드중인 새로 발견 된 파일을 열지 못하게합니다.

모든 프로세스가 파일을 사용하는 동안 열린 상태로 유지하는 것은 아닙니다. 예를 들어 vim은 임시 파일 (/home/myUser/.myFile.swp)을 열어두고로드하거나 저장할 때만 실제 파일을 열 수 있습니다.

0

다음과 같이 할 수 있습니다.

광고를 실행하는 행의 끝에 &
decrypt "TheFile"& 
pluma "TheFile" 
encrypt "TheFile" 

다음 PLUMA 속하게. pluma가 닫힐 때까지 스크립트가 일시 중지됩니다.

스크립트를 게시하면 더 많은 도움을 드릴 수 있습니다.