답변:
대부분의 경우 ps, 넓은 출력을 가능하게하기 위해 선호하는 플래그와 함께 실행 만으로 충분합니다. 나는쪽으로 기댈 수 ps -feww있지만 다른 제안은 효과가 있습니다. 프로그램이 다른 사람에서 시작된 $PATH경우 전체 경로가 아니라 실행 파일 이름 만 표시됩니다. 예를 들어 다음을 시도하십시오.
$ lftp &
$ ps -feww | grep ftp
lars 9600 9504 0 11:30 pts/10 00:00:00 lftp
lars 9620 9504 0 11:31 pts/10 00:00:00 grep ftp
ps실행중인 프로그램이 표시되는 정보를 완전히 덮어 쓸 수 있다는 점에 유의해야합니다 . 예를 들어이 코드는 다음과 같습니다.
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
이것을 "myprogram"이라는 파일로 컴파일하고 실행하면 :
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
그런 다음을 실행 ps하면 다른 프로세스 이름이 표시됩니다.
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
/proc/<pid>/exe적절한 실행 파일에 대한 심볼릭 링크 일 수있는을 직접 확인할 수도 있습니다. 위의 예에서 이것은 다음보다 훨씬 유용한 정보를 제공합니다 ps.
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
가장 신뢰할 수있는 방법은 /proc프로세스 의 디렉토리를 보는 것입니다. 각 프로세스에는 다음 /proc/<pid>/과 같은 정보를 유지 하는 디렉토리가 있습니다.
cwd 현재 작업 디렉토리에 연결fd 열린 파일 (파일 설명자)에 대한 링크가있는 디렉토리cmdline 프로세스를 시작하는 데 사용 된 명령 행을 보려면 읽으십시오environ 해당 프로세스의 환경 변수 root 프로세스가 루트 디렉토리로 간주하는 것에 대한 링크각 프로세스 / proc에 대한 더 멋진 정보가 있지만 위의 프로세스를 사용하면 진행 상황을 정확하게 알 수 있습니다.
ps auxf또한를 사용 하면 누가 포크를했는지 보여 주므로 누가 펄을 부르는지 더 잘 알 수 있습니다.
/proc프로세스 개념이 포함 된 기본 개념처럼 보이는 것을 가르쳐 준 +1 ! 누가 알았 겠어?? 내가 찾은 모든 것이 있었다 version그리고 cpuinfo물건 ... 그리고 내 라우터 버전의 ps는 모든 매개 변수를 무시하기 때문에 내 실제 문제를 해결합니다.
chroot()이전에 호출 된 경우 어떤 디렉토리가 /proc/ᴘɪᴅ/cwd해당 하는지 어떻게 알 수 있습니까?
나에게 지금 막 나는 pstree프로세스가 어떻게 시작되었는지에 대한 훨씬 더 명확한 표시를 발견했다.ps aux
다음과 같이 보입니다 :
├─lightdm─┬─Xorg
│ ├─lightdm─┬─init─┬─apache2───2*[apache2───26*[{apache2}]]
│ │ │ ├─at-spi-bus-laun─┬─dbus-daemon
│ │ │ │ └─3*[{at-spi-bus-laun}]
│ │ │ ├─at-spi2-registr───{at-spi2-registr}
│ │ │ ├─dbus-daemon
│ │ │ ├─dropbox───29*[{dropbox} ]
try use 명령
fuser -vu /var/spool/mail
이 명령은 지정된 파일 또는 파일 시스템을 사용하는 프로세스의 PID를 표시합니다. 기본 표시 모드에서 각 파일 이름 뒤에는 액세스 유형을 나타내는 문자가옵니다.
c-현재 디렉토리 e-실행 파일이 실행 중입니다. f-파일을 엽니 다. 기본 표시 모드에서는 f가 생략됩니다. r-루트 디렉토리 m-mmap'ed 파일 또는 공유 라이브러리.
찾고있는 답변을 찾기 위해 검색을 진행하는 데 도움이 될 수 있습니다. 그것이 도움이되는지 모르겠지만 유용한 정보를 찾을 수 있습니다.
두 가지 명령이 떠 오릅니다.
1) ' ps ' 에서 프로세스 시작 시간을 가져옵니다 .
$ ps -ax -o pid,start,comm
PID STARTED COMMAND USER
1 Feb 06 init root
2 Feb 06 kthreadd root
[...]
13147 19:09:48 chrome hcooper
13270 19:13:51 chrome hcooper
13386 19:18:34 bash hcooper
2) lastcomm , 지금 확인 했지만 설치하지 않았습니다. 어쨌든 매뉴얼 페이지 설명은 다음과 같습니다.
lastcomm prints out information about previously executed commands. If no arguments are specified, lastcomm will print info about all of the commands in acct (the record file).
그러나 소수의 사람들이 말했듯이 "ls -al / proc /"는 많은 것을 말해 줄 것입니다!
/proc프로그램에 대한 모든 정보를 제공하고,exe실행 파일로의 링크,cwd현재 작업 디렉토리로의fd링크 , 디렉토리는 열린 파일에 대한 링크를 포함합니다 (표준 입력, 출력 및 표준 오류 포함)