일정시간 아무작업 없는 프로세스 kill하는 스크립트!
안녕하세요. 리눅스서버 어제부터 처음 만져보는 학생입니다.ㅠ
계속 검색에 검색에 검색을 통해서 공부하는 중 허헠재밌어..
바로 본론으로 들어가서!
제가 하려는 것은
실행되어있는 프로세스들 중 일정시간동안 아무작업이 이루어지지 않은 것을 kill하는
스크립트를 짜려고합니다.
계속 검색에 검색에 검색을 통해서
한 가지 방법을 구상했는 데,
w 명령어로 현재 로그인된 사용자들이 나오고 그 해당 ssh IDLE time까지 나오잖아요!
(1)일정시간 넘어간 IDLE time의 tty를 뽑아내고
(2)ps aux 명령어에서 뽑아낸 tty의 실행되고 있는 프로세스의 pid를 이용해 다 kill하는 겁니다!!
그런데 문제가 하나 있더라구요.
ps aux 명령어로 확인해보면 tty부분에 보통은 w 명령어에 나오는 tty정보들이 쭉 있을 꺼라고 예상했으나
거의 대부분 ? 로 나오더라구요.
(예를 들어서)
USER PID %CPU %MEM VSZ RSS TTY ... myggul 9894 0.0 0.0 11424 1052 pts/23 ... amuk 31317 0.0 0.1 37580 4236 pts/32 ... amuk 31612 0.0 10.1 1194124 416896 ? ...
정작 kill해야되는건 세번째줄에 나와있는 프로세스인데!!!
(idle time이 엄청 오래된 프로세스라고 가정하면)
(★A.여기서 생각난 추가질문.. 세번째줄은 rails서버인데,, rails서버는 오래켜두면 뭐이리 메모리를 많이 잡아먹을까요..우걱우걱완전돼지)
TTY 가 '?'로 나와있어요 ㅠㅠ.ㅠ
위의 (1)조건에서 tty pts/32를 뽑아냈다면
세번째 줄 tty가 ?로 나와있어서 (2)조건에 pid가 걸러지지 않을 것이고,
저거 프로세스는 못죽이게 됩니다. 흑흑흑
▶ 여기서 질문은!!!!
1. tty '?'로 나오는 것은 무엇을 의미하는 것입니까???
2. 만약 ps aux 명령어에 IDLE TIME 까지 한꺼번에 출력할 수 있는 명령어가 있으면 (1)조건 안거쳐도 될듯 싶은데
각각 프로세스의 IDLE time과 pid를 출력할 수 있는 방법이 있나요ㅠㅠ?
3. 혹여 다른 방법으로 일정시간 아무작업 없는 프로세스를 kill할 수 있는 스크립트 알고리즘(?) 이 있다면 추천해주세요.ㅠ
p.s.
그나저나 방법을 알아도 스크립트 짜는 것도 쉘문법을 거의모르니 구글링의 연속이겠네..요..ㅠ
★B. 또생각난 추가질문 이 스크립트는 crontab에서 계속 주기적으로 실행시켜놓으면 되겠죠??
다 읽어주셔서 감사합니다.
완전초보자에게 구원의 손길좀......내밀어주세요..흑ㅠ
댓글 달기