CentOS 6에서 ps -aux와 같은 명령을 실행하면 아래와 같이 [] 안에 해당 명령이 나열된 여러 프로세스가 표시됩니다. 이름에 있는 []는 무슨 뜻인가요? 나는 이것이 일종의 특별한 프로세스라고 가정하고 있습니다. 프로세스 이름 주위에 []가 나타나는 이유는 무엇입니까?
[root@centos6 src]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:48 ? 00:00:01 /sbin/init
root 2 0 0 18:48 ? 00:00:00 [kthreadd]
root 3 2 0 18:48 ? 00:00:00 [migration/0]
root 4 2 0 18:48 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 18:48 ? 00:00:00 [migration/0]
root 6 2 0 18:48 ? 00:00:00 [watchdog/0]
root 7 2 0 18:48 ? 00:00:02 [events/0]
답변1
명령줄에 액세스할 수 없는 경우 ps
빈 /proc/<pid>/cmdline
문자열이 반환되고 ps
대괄호로 묶입니다.
이를 사용하여 다음 명령을 실행하고 프로세스 목록에서 확인하여 위의 내용을 테스트할 수 있습니다.
$ perl -e '$0 = ""; sleep'
그런 다음 다음을 만드십시오 ps
.
saml 26756 2098 0 21:21 pts/9 00:00:00 []
물론 우리의 perl
프로세스는 대괄호( []
) 안에 표시됩니다.
cmdline이 비어 있습니다. 정말인가요?
예, 조금 이상해 보이지만 확인하기 위해 첫 번째 쌍을 확인했는데 확실히 비어 있었습니다.
$ for i in `seq 2125`;do [ -e /proc/$i/cmdline ] || continue; \
echo -n "PID# $i: "; echo $(cat /proc/$i/cmdline);done | less
PID# 1: /sbin/init
PID# 2:
PID# 3:
PID# 4:
PID# 5:
PID# 15:
...
PID# 1187: /sbin/rsyslogd-c4
PID# 1189: /sbin/rsyslogd-c4
PID# 1190: /sbin/rsyslogd-c4
PID# 1211:
PID# 1229: irqbalance
PID# 1255: rpcbind
PID# 1269: mdadm--monitor--scan-f--pid-file=/var/run/mdadm/mdadm.pid
...
그들을 제거?
-f
및 스위치를 사용하면 -c
대괄호 없이 이러한 프로세스의 확장된 버전을 볼 수 있습니다.
$ ps --version
procps version 3.2.8
$ ps -auxfc | less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S Aug21 0:00 kthreadd
root 3 0.0 0.0 0 0 ? S Aug21 0:04 \_ ksoftirqd/0
root 4 0.0 0.0 0 0 ? S Aug21 0:03 \_ migration/0
root 5 0.0 0.0 0 0 ? S Aug21 0:00 \_ watchdog/0
root 15 0.0 0.0 0 0 ? S Aug21 0:04 \_ events/0
root 19 0.0 0.0 0 0 ? S Aug21 0:00 \_ cpuset
root 20 0.0 0.0 0 0 ? S Aug21 0:00 \_ khelper
root 21 0.0 0.0 0 0 ? S Aug21 0:00 \_ netns
root 22 0.0 0.0 0 0 ? S Aug21 0:00 \_ async/mgr
root 23 0.0 0.0 0 0 ? S Aug21 0:00 \_ pm
root 24 0.0 0.0 0 0 ? S Aug21 0:00 \_ sync_supers
root 25 0.0 0.0 0 0 ? S Aug21 0:00 \_ bdi-default
root 26 0.0 0.0 0 0 ? S Aug21 0:00 \_ kintegrityd/0
root 30 0.0 0.0 0 0 ? S Aug21 0:07 \_ kblockd/0
root 34 0.0 0.0 0 0 ? S Aug21 0:00 \_ kacpid
root 35 0.0 0.0 0 0 ? S Aug21 0:00 \_ kacpi_notify
root 36 0.0 0.0 0 0 ? S Aug21 0:00 \_ kacpi_hotplug
root 37 0.0 0.0 0 0 ? S Aug21 0:00 \_ ata_aux
root 38 0.0 0.0 0 0 ? S Aug21 0:00 \_ ata_sff/0
root 42 0.0 0.0 0 0 ? S Aug21 0:00 \_ khubd
root 43 0.0 0.0 0 0 ? S Aug21 0:00 \_ kseriod
root 44 0.0 0.0 0 0 ? S Aug21 0:35 \_ kswapd0
root 45 0.0 0.0 0 0 ? SN Aug21 0:00 \_ ksmd
root 46 0.0 0.0 0 0 ? S Aug21 0:00 \_ aio/0
root 50 0.0 0.0 0 0 ? S Aug21 0:00 \_ crypto/0
root 59 0.0 0.0 0 0 ? S Aug21 0:00 \_ scsi_eh_0
root 60 0.0 0.0 0 0 ? S Aug21 0:26 \_ scsi_eh_1
root 61 0.0 0.0 0 0 ? S Aug21 0:00 \_ scsi_eh_2
root 62 0.0 0.0 0 0 ? S Aug21 0:00 \_ scsi_eh_3
root 63 0.0 0.0 0 0 ? S Aug21 0:00 \_ scsi_eh_4
root 64 0.0 0.0 0 0 ? S Aug21 0:00 \_ scsi_eh_5
root 71 0.0 0.0 0 0 ? S Aug21 0:00 \_ kpsmoused
root 72 0.0 0.0 0 0 ? S Aug21 0:00 \_ kstriped
매뉴얼 페이지에서 ps
:
-c Show different scheduler information for the -l option.
-f does full-format listing. This option can be combined with many
other UNIX-style options to add additional columns. It also
causes the command arguments to be printed. When used with -L,
the NLWP (number of threads) and LWP (thread ID) columns will be
added. See the c option, the format keyword args, and the format
keyword comm.