문제 해결을 위해 15초마다 PID와 해당 명령을 기록하고 이를 텍스트 파일에 쓰고 싶습니다.
원하는 출력: 타임스탬프, PID, 명령
답변1
그러면 필요한 세 가지 열이 제공됩니다.
$ ps -hopid,comm | perl -anle'print time, ", $F[0], $F[1]"'
1541626566, 6496, gedit
1541626566, 7513, bash
범위를 제한하거나 확장할 수 있습니다 ps
. 어떤 프로세스가 나열되어 있습니다. 그런 다음 리디렉션을 사용하여 루프에 넣습니다.
while true; do echo x; sleep 15; done > out
선택한 echo x
올바른 명령 및 파일 이름으로 바꾸십시오 .out
정보를 생성하는 명령에 대한 요약은 다음과 같습니다.
ps -hopid,comm
ps
- 분명히-h
헤더 라인을 닫고-o
출력(PID 및 명령)을 나타냅니다.- 이것은 Perl 명령인
perl -anle'print time, ", $F[0], $F[1]"'
Perl 로 이동합니다perl
.-anle
따라서 이러한 플래그는 다음을 의미합니다.a
- 입력을 배열에 로드하고,n
- 새 줄을 처리하고,l
- 각 줄을 처리하고, 마지막으로e
- 숨은 코드를 실행합니다. - 이제 코드는 다음과 같습니다
'print time, ", $F[0], $F[1]"'
. 먼저 타임스탬프가 인쇄된 다음 입력 자료를 포함하는 배열의 첫 번째 열, 두 번째 열이 인쇄됩니다.