작성계기
평소에 컴퓨터를 쓰다 보면 탭을 매우 많이 열게 되는데, 윈도우 업데이트된다든지 에러나서 꺼진다든지 하면 열어놨던 탭들이 싹 다 날아가서 다시 복구하는 작업이 매우 오래 걸리고 힘들었다. 재부팅되거나 예상치 못하게 꺼질 때를 대비하여 그냥 열려 있는 탭들을 싹 다 저장해버리는 프로그램을 만들었고, 잘 작동하는 것 같아서 공유한다.
코드
파이썬으로 구현했고, psutil이라는 윈도우 프로세스 이름에 접근할 수 있는 3rd party module을 사용했다.
https://gist.github.com/ProjectEli/a3de55e6f2c2df760eee41bc819c1f52
구현원리
이전에 썼던 sysinternals process explorer 관련 글에서 파일 핸들 찾는 부분을 자동화했다고 보면 된다. psutil이라는 모듈이 귀찮은 작업들을 다 처리해 주므로, 해야할 것은 psutil.iter(['pid', 'name']) 뿐이다. 이렇게 하면 list 형태로 현재 실행 중인 모든 프로세스 목록이 반환되는데, 이 중 프로세스명 또는 잡고 있는 파일 핸들명으로 필터해서 조건에 맞는 것만 저장하면 된다. 장점은 실제로 프로세스가 잡고 있는 파일 핸들을 스냅샷 찍는거기 때문에 탭의 형태가 아니더라도 파일 확장자만 알면 저장 목록에 죄다 추가할 수 있다는 것이다.
물론 sysinternals의 handle.exe도 같은 기능을 제공하는데, 문제는 ASCII밖에 쓸 줄 모르는 MS 개발자들이 한글에 대응을 못해놔서 우리나라 사람이 쓰기에는 여러 애로사항이 생기기 때문에 인코딩 부분까지 신경썼다. getOpenFilesForProcess() 에 인코딩 변환 부분이 들어있다. utf-8로 저장한다. 이외의 부분은 코드를 읽어보면 금방 이해할 수 있으리라 생각한다.
사용법
사용하기 위해서는 적절한 위치에 위의 코드를 py파일로 저장한 후, python 실행 환경을 구축하고 psutil을 설치하면 된다. 필자는 conda 가상환경을 구축 후 windows terminal 또는 vscode에서 실행하였다. 위 코드에는 pdf, ppt, illustrator, origin pro, cad 등 자주 쓰는 프로그램들을 필터 리스트에 추가하였다. 입맛대로 수정해서 쓰면 된다. 실행하면 콘솔 창에 아래와 같이 현재 스캔 중인 프로세스명이 출력되고, 다 끝나면 소요시간도 표시해 준다. 아래의 경우 전체 프로세스 스캔 및 저장하는데 약 40초가 걸렸다. 당연히 이것저것 많이 실행하고 있을수록 오래 걸리고, 실행한 게 없을수록 빨리 끝난다. 그리고 필터 리스트에 해당하는 게 하나도 없으면 파일이 저장되지 않는다. 저장 파일은 py와 같은 폴더이며, 자동으로 시작시간을 얻어와서 파일명에 적용한다. txt 파일이므로 메모장 등으로 확인 가능하다.
저장된 파일을 열어 보면 대충 아래와 같은 느낌으로 저장된다.
참고사항
메모장의 경우 열린 이후에 파일 핸들을 닫기 때문에 열린 메모장을 저장하려면 별도의 방법을 써야 한다. 크롬의 경우에는 외부 프로그램에서 크롬 탭에 접근할 수 없기 때문에 webdriver같은 것으로 탭 url 받아와도 되고, 필자의 경우에는 oneTab 이라는 크롬 플러그인을 사용하고 있다. 파일 탐색기의 경우에도 핸들로 찾거나 window name으로 찾아도 되지만 필자의 경우 Quizoapps qttabbar를 사용하여 저장하고 있다. 이외에 웬만한 것들은 위 코드를 적절히 변형하면 현재 사용 중인 파일들을 손쉽게 저장할 수 있을 것이다.
결론
그 동안 열려 있던 탭들 복구하는 게 매우 힘들었는데 이참에 뿌리를 뽑아버렸다. 윈도우 스케줄러같은데에 5~10분마다 실행하게 걸어두면 운 없이 재부팅되더라도 파일명 보고 손쉽게 다시 열 수 있을 것으로 기대한다. 혼자 쓰기 아까워서 공유한다.
'IT > 새로운 시도' 카테고리의 다른 글
생성형 인공지능을 활용한 보고서 및 논문용 그림 그리기 (1) | 2024.12.06 |
---|---|
Blender CAD sketcher로 Autodesk inventor 대체 시도 (0) | 2024.11.24 |
사무용 컴퓨터 밑바닥부터 세팅 (1) | 2024.10.21 |
자막이 없는 유튜브 영상에서 대화 내용 추출 및 자동 요약하기 (4) | 2024.08.11 |
포토샵 2024에서 ico 파일로 저장 (0) | 2024.06.30 |