「이 프로그램 벌써 몇 시간동안 하고 있어...」를 조사한다 & tmux 로 표시할 수 있도록(듯이) 한다
서버를 사용해 실험을 하고 있으면, 1회 실행하는데 몇 시간이 걸리는 프로그램을 여러가지 쓰면서 몇번이나 실행해 데이터를 취하거나 하는 것이 자주 있다. 그 때에 타임 스탬프 표시를 넣는 것을 잊거나 하면, 실행을 시작하고 나서 상당히 시간이 지난 후에, 「어라, 이 프로그램 언제부터 실행하고 있는 거야? 예측도 할 수 없구나,,,」라고 하는 것이 자주 있다.
이런 프로그램은 주로 tmux의 안쪽에서 움직이고 있기 때문에, tmux의 키 바인드로부터 빨리 확인할 수 있으면 기뻤기 때문에, 그런 것을 만들었다. 지금은 리눅스에서만 움직이지만, OS X의
ps
명령에 맞게 수정을 하면 OS X에서도 움직일 것이다.쉘이 실행 중인 프로세스를 검사하는 명령
~/usr/bin/childpidinfo
라든지 이름을 붙여 아래의 스크립트를 저장한다.이 녀석은 인수로 프로세스의 PID를 지정하여 해당 프로세스의 하위 프로세스 중 가장 새로운 프로세스에 대해 시작 시간과 실행 시간을 표시하는 명령입니다. tmux로 열려 있는 쉘의 PID를 건네주어 하는 것으로, 결과적으로 실행중의 프로세스를 조사할 수 있다. 커스터마이즈 하면, 시각 이외에도, 하려고 하면 CPU 사용률이라든지 메모리 사용률이라든지
ps
로 취할 수 있는 것은 뭐든지 표시 가능.#!/bin/bash
if [ $# -lt 1 ]; then
echo "[ERROR] usage: $0 PARENT_PID"
exit 1
fi
LAST_CHILD_PID=$(for pid in $(ps --ppid $1 -o pid= | tr -d ' '); do
STARTTIME_SEC=$(date -d "`ps --pid $pid -o lstart=`" +%s)
echo $pid $STARTTIME_SEC
done | sort -k2 | tail -n1 | cut -d' ' -f1)
if [ -z "$LAST_CHILD_PID" ]; then
echo "No child process is running."
exit
fi
STARTTIME_SEC=$(date -d "`ps --pid $LAST_CHILD_PID -o lstart=`" +%s)
STARTTIME=$(date -d @${STARTTIME_SEC} +"%Y/%m/%d %H:%M:%S")
DURATION_SEC=$(($(date +%s)-STARTTIME_SEC))
DURATION=$(date --utc -d @${DURATION_SEC} +%kh%Mm%Ss | sed -e 's/^ \(0h\)?*//' | sed -e 's/^00*m//' | sed -e 's/^0//')
echo "[PID:$LAST_CHILD_PID] started at $STARTTIME (running $DURATION)"
tmux.conf 설정
여기에서는
<prefix> Shift+P
에 할당한다.# display-message lasts 4 seconds
set-option -g display-time 4000
bind-key P run-shell "tmux display-message \"$(childpidinfo $(tmux list-panes -F '#{pane_active} #{pane_pid}' | grep '^1' | cut -d' ' -f2))\""
Reference
이 문제에 관하여(「이 프로그램 벌써 몇 시간동안 하고 있어...」를 조사한다 & tmux 로 표시할 수 있도록(듯이) 한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hayamiz/items/254b29e99e70a230e920텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)