내 컴퓨터에서 실행되는 matlab 작업을위한 간단한 메모리 프로파일 러를 사용하려고합니다. 1 개 또는 0 개의 matlab 작업 인스턴스가 있지만 해당 프로세스 ID는 자주 변경됩니다 (실제로 다른 스크립트에서 호출되기 때문에). 그래서 여기따옴표 붙은 bash 스크립트를 실행하는 방법.
내가 메모리 사용량을 기록하기 위해 함께 넣어 bash는 스크립트입니다
#!/bin/bash
pid=`ps aux | grep '[M]ATLAB' | awk '{print $2}'`
if [[ -n $pid ]]
then
\grep VmSize /proc/$pid/status
else
echo "no pid"
fi
이 같은 떠들썩한 파티에서이 스크립트를 실행하면 잘 작동
./script.sh
, 나을주는 다음 결과 :
VmSize: 1289004 kB
정확히 내가 원하는 것입니다.
이제 주기적으로 실행하고 싶습니다.
watch ./script.sh
그러나이 경우 난 단지가 나타납니다 : 그래서 다음과 같이 watch
으로 실행
no pid
와 나는 그것을 볼 수 있기 때문에 내가 matlab에 작업이 아직 실행 알고 있습니다 top
에 동일한 PID, 그리고 게다가, 나는 각 matlab 작업을 완료하는 데 몇 시간 걸릴 알아요.
나는 pid를 설정할 때 내가 가진 따옴표가 잘못되었다고 확신한다. 나는 그것을 고치는 방법을 알아낼 수 없다. 내가 뭘 잘못하고 있는지 누구나 아는 사람?
추신. 설명서 페이지가 watch
인 경우 명령은 sh -c
으로 실행됩니다. sh -c ./script
과 같은 스크립트를 실행했지만 정상적으로 작동하지만 watch
은 작동하지 않습니다.
+1에 대한 정답이 있습니다 (형식이 너무 비슷합니다.). 가장 가능성있는 설명은 '시계'가 그것을 확인하기로 결정할 때 matlab이 실행되지 않고 있다는 것입니다. 나는'ps aux | grep '[M] ATLAB''을'pid = ...'위의 줄에 써서 스크립트가 찾고 있는지를 확인하십시오. '남자 시계 '를 보았습니까? 당신의 노력처럼 검색을 동기화하는 것에 대한 단서가 있습니까? 행운을 빕니다! – shellter
감사합니다. @shellter. 나는이 질문에 언급 했어야 : MATLAB 실제로 전체 시간을 실행합니다. 나는 항상 같은 pid로'top'에서 볼 수 있습니다. 나는 또한 직장에서 matlab은 몇 시간이 걸린다는 것을 알고 있으며 watch를 실행하는 동안 종료되지는 않을 것이다. 이를 반영하기 위해 질문을 업데이트 할 것입니다. – farmir
방금 스크립트를 테스트했습니다. 하지만 그것은 내 컴퓨터에서 잘 작동합니다! –