Linux实战:如何查找程序启动完整命令

  经常使用Linux的小伙伴们可能都会遇到一个问题,就是如何一个此前正在运行中的进程出了问题,想将它重新启动,但是一时半会儿又找不到重启的命令,黑肥子我也曾经被这个问题困扰了很久,不过,还终于让黑哥我找到了解决问题的办法,这里给大家做一下介绍。

  • 结合history命令进行查找。

  我们知道通常情况下,系统会记录下大家在Linux上的操作记录,而这些东西被记录在~/.history文件中。我们可以使用如下命令获取到。

[root@qwfys ~]# history
  • 结合进程号查找

  所谓结合进程号查找,就是先获取到进程的PID,然后到/proc/$PID/cmdline文件中查看。

  接下来,我们结合一个例子给大家介绍。

  首先,我们通过ps -ef查找PID为30205的进程。

[root@qwfys ~]# ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2019 ?        00:23:49 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0  2019 ?        00:00:00 [kthreadd]
root         4     2  0  2019 ?        00:00:00 [kworker/0:0H]
root         6     2  0  2019 ?        00:00:48 [ksoftirqd/0]
root         7     2  0  2019 ?        00:00:00 [migration/0]
root         8     2  0  2019 ?        00:00:00 [rcu_bh]
root         9     2  0  2019 ?        00:56:02 [rcu_sched]
root        10     2  0  2019 ?        00:00:00 [lru-add-drain]
root        11     2  0  2019 ?        00:00:27 [watchdog/0]
root        12     2  0  2019 ?        00:00:20 [watchdog/1]
root        13     2  0  2019 ?        00:00:00 [migration/1]
root        14     2  0  2019 ?        00:03:31 [ksoftirqd/1]
root        16     2  0  2019 ?        00:00:00 [kworker/1:0H]
root        17     2  0  2019 ?        00:00:21 [watchdog/2]
root        18     2  0  2019 ?        00:00:00 [migration/2]
root        19     2  0  2019 ?        00:00:43 [ksoftirqd/2]
root        21     2  0  2019 ?        00:00:00 [kworker/2:0H]
root        22     2  0  2019 ?        00:00:17 [watchdog/3]
root        23     2  0  2019 ?        00:00:00 [migration/3]
root        24     2  0  2019 ?        00:03:15 [ksoftirqd/3]
root        26     2  0  2019 ?        00:00:00 [kworker/3:0H]
root        28     2  0  2019 ?        00:00:00 [kdevtmpfs]
root        29     2  0  2019 ?        00:00:00 [netns]
root        30     2  0  2019 ?        00:00:23 [khungtaskd]
root        31     2  0  2019 ?        00:00:00 [writeback]
root        32     2  0  2019 ?        00:00:00 [kintegrityd]
root        33     2  0  2019 ?        00:00:00 [bioset]
root        34     2  0  2019 ?        00:00:00 [bioset]
root        35     2  0  2019 ?        00:00:00 [bioset]
root        36     2  0  2019 ?        00:00:00 [kblockd]
root        37     2  0  2019 ?        00:00:00 [md]
root        38     2  0  2019 ?        00:00:00 [edac-poller]
root        39     2  0  2019 ?        00:00:00 [watchdogd]
root        46     2  0  2019 ?        00:00:31 [kswapd0]
root        47     2  0  2019 ?        00:00:00 [ksmd]
root        48     2  0  2019 ?        00:00:24 [khugepaged]
root        49     2  0  2019 ?        00:00:00 [crypto]
root        57     2  0  2019 ?        00:00:00 [kthrotld]
root        59     2  0  2019 ?        00:00:00 [kmpath_rdacd]
root        60     2  0  2019 ?        00:00:00 [kaluad]
root        61     2  0  2019 ?        00:00:00 [kpsmoused]
root        62     2  0  2019 ?        00:00:00 [ipv6_addrconf]
root        75     2  0  2019 ?        00:00:00 [deferwq]
root       152     2  0  2019 ?        00:00:03 [kauditd]
root       253     2  0  2019 ?        00:00:00 [ata_sff]
root       275     2  0  2019 ?        00:00:00 [scsi_eh_0]
root       283     2  0  2019 ?        00:00:00 [scsi_tmf_0]
root       294     2  0  2019 ?        00:00:00 [scsi_eh_1]
root       297     2  0  2019 ?        00:00:00 [scsi_tmf_1]
root       457     2  0  2019 ?        00:00:00 [ttm_swap]
root       531     2  0  2019 ?        00:00:02 [kworker/1:1H]
root       537     2  0  2019 ?        00:00:58 [kworker/0:1H]
root       542     2  0  2019 ?        00:00:05 [kworker/2:1H]
root       543     2  0  2019 ?        00:03:48 [jbd2/vda1-8]
root       544     2  0  2019 ?        00:00:00 [ext4-rsv-conver]
root       606     2  0  2019 ?        00:00:01 [kworker/3:1H]
root       624     1  0  2019 ?        00:00:47 /usr/lib/systemd/systemd-journald
root       653     1  0  2019 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       992     2  0  2019 ?        00:00:00 [nfit]
root      1009     1  0  2019 ?        00:00:10 /sbin/auditd
dbus      1033     1  0  2019 ?        00:01:12 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
polkitd   1037     1  0  2019 ?        00:00:33 /usr/lib/polkit-1/polkitd --no-debug
root      1040     1  0  2019 ?        00:08:24 /usr/sbin/irqbalance --foreground
root      1041     1  0  2019 ?        00:00:43 /usr/lib/systemd/systemd-logind
root      1045     1  0  2019 ?        00:00:16 /usr/sbin/crond -n
root      1046     1  0  2019 ?        00:00:00 /usr/sbin/atd -f
root      1064     1  0  2019 ttyS0    00:00:00 /sbin/agetty --keep-baud 115200,38400,9600 ttyS0 vt220
root      1066     1  0  2019 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
ntp       1087     1  0  2019 ?        00:00:38 /usr/sbin/ntpd -u ntp:ntp -g
root      1267     1  0  2019 ?        00:00:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H xtwj001 eth0
root      1330     1  0  2019 ?        00:06:21 /usr/sbin/rsyslogd -n
root      1336     1  0  2019 ?        00:15:21 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root      1471  9305  0 Jan15 ?        11:43:30 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-pay-biz/;file:/xtwj/biz/common.properties
root      2513     2  0 Mar16 ?        00:00:00 [kworker/2:1]
root      2532     1  0  2019 ?        00:00:02 /usr/sbin/sshd -D
root      3061     2  0 Feb02 ?        00:00:41 [kworker/2:0]
root      3316     1  0 Jan11 ?        01:26:35 /usr/java/jdk1.8.0_201/bin/java -Dzookeeper.log.dir=/usr/local/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-root-server-xtwj001.log -Dzookeeper.root.logger=INFO,CONSOLE -XX:+HeapDump
root      5303     1  0  2019 ?        01:17:22 java -jar jeexjj-mall-admin-0.0.1-SNAPSHOT.war
root      6701     1  0  2019 ?        00:00:01 ssh -x -a -oClearAllForwardings=yes -2 root@xtwj000 -s sftp
root      6702     1  0  2019 ?        00:00:00 sshfs -o reconnect root@xtwj000:/data/remote/ecs01 /data/remote/ecs00
root      6726     1  0  2019 ?        00:00:00 ssh -x -a -oClearAllForwardings=yes -2 root@xtwj005 -s sftp
root      6727     1  0  2019 ?        00:00:00 sshfs -o reconnect root@xtwj005:/data/remote/ecs01 /data/remote/ecs05
root      7793  2532  0 10:33 ?        00:00:00 sshd: root@pts/0
root      7795  7793  0 10:33 pts/0    00:00:00 -bash
root      7850  7795  0 10:34 pts/0    00:00:00 ps -ef
root      8738     2  0 Jan18 ?        00:00:49 [kworker/u8:1]
root      9122     1  0  2019 ?        00:00:00 nginx: master process ./nginx
root      9305     1  0  2019 ?        13:52:28 /usr/bin/python2 /bin/supervisord -c /etc/supervisor/supervisord.conf
root     10628  9305  0 Jan16 ?        11:34:34 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-user-biz/;file:/xtwj/biz/common.propertie
root     16035     2  0 Mar17 ?        00:00:00 [kworker/0:1]
root     18236     2  0 Mar16 ?        00:00:00 [kworker/3:0]
root     20180     2  0 Feb14 ?        00:05:09 [kworker/1:2]
root     20561     1  0 Mar16 ?        00:02:17 /usr/sbin/aliyun-service
root     24160     2  0 Mar02 ?        00:00:14 [kworker/3:1]
root     25270     2  0 Feb11 ?        00:01:01 [kworker/0:0]
root     25826  9305  0 Jan21 ?        10:40:51 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-activity-biz/;file:/xtwj/biz/common.prope
root     27028     2  0 Mar05 ?        00:00:17 [kworker/u8:0]
root     27808  9305  0 Jan17 ?        11:38:32 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/web/xtwj-mall-web/;file:/xtwj/web/common.properties -Dl
nginx    29175  9122  0 Mar17 ?        00:00:12 nginx: worker process
nginx    29176  9122  0 Mar17 ?        00:00:08 nginx: worker process
nginx    29177  9122  0 Mar17 ?        00:00:06 nginx: worker process
nginx    29178  9122  0 Mar17 ?        00:00:09 nginx: worker process
nginx    29179  9122  0 Mar17 ?        00:00:17 nginx: worker process
nginx    29180  9122  0 Mar17 ?        00:00:19 nginx: worker process
nginx    29181  9122  0 Mar17 ?        00:00:59 nginx: worker process
nginx    29182  9122  0 Mar17 ?        00:00:27 nginx: worker process
nginx    29183  9122  0 Mar17 ?        00:00:00 nginx: cache manager process
root     29334     1  0 Feb17 ?        00:15:38 /usr/local/aegis/aegis_update/AliYunDunUpdate
root     29397     1  0 Feb17 ?        07:04:57 /usr/local/aegis/aegis_client/aegis_10_77/AliYunDun
root     30204  9305  0 Jan15 ?        11:26:41 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/web/xtwj-mall-mini/;file:/xtwj/web/common.properties -D
root     30205  9305  1 Jan15 ?        15:34:46 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-goods-biz/;file:/xtwj/biz/common.properti
root     30209  9305  0 Jan15 ?        11:18:24 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-sms-biz/;file:/xtwj/biz/common.properties
root     30221  9305  0 Jan15 ?        12:15:17 /usr/java/jdk1.8.0_201/bin/java -jar -Xdebug -Xnoagent -Xmx1024m -Xms1024m -XX:NewRatio=1 -XX:SurvivorRatio=8 -Dconfig.path=file:/xtwj/biz/xtwj-mall-order-biz/;file:/xtwj/biz/common.properti
root     31570     2  0 01:10 ?        00:00:00 [kworker/1:0]

  接下来,我们进入目录/proc/$PID目录,对应到我们这个例子中,就是/proc/30205目录。

[root@qwfys ~]# ll /proc/30205/
total 0
dr-xr-xr-x   9 root root 0 Jan 15 22:08 .
dr-xr-xr-x 125 root root 0 Nov 30 00:21 ..
dr-xr-xr-x   2 root root 0 Mar 18 10:35 attr
-rw-r--r--   1 root root 0 Mar 18 10:35 autogroup
-r--------   1 root root 0 Mar 18 10:35 auxv
-r--r--r--   1 root root 0 Feb 11 14:25 cgroup
--w-------   1 root root 0 Mar 18 10:35 clear_refs
-r--r--r--   1 root root 0 Jan 15 22:08 cmdline
-rw-r--r--   1 root root 0 Mar 18 10:35 comm
-rw-r--r--   1 root root 0 Mar 18 10:35 coredump_filter
-r--r--r--   1 root root 0 Mar 18 10:35 cpuset
lrwxrwxrwx   1 root root 0 Mar 18 10:35 cwd -> /xtwj/biz/xtwj-mall-goods-biz
-r--------   1 root root 0 Mar 18 10:35 environ
lrwxrwxrwx   1 root root 0 Jan 15 22:08 exe -> /usr/java/jdk1.8.0_201/bin/java
dr-x------   2 root root 0 Jan 15 22:09 fd
dr-x------   2 root root 0 Mar 18 10:35 fdinfo
-rw-r--r--   1 root root 0 Mar 18 10:35 gid_map
-r--------   1 root root 0 Mar 18 10:35 io
-r--r--r--   1 root root 0 Mar 18 10:35 limits
-rw-r--r--   1 root root 0 Mar 18 10:35 loginuid
dr-x------   2 root root 0 Mar 18 10:35 map_files
-r--r--r--   1 root root 0 Mar 18 10:35 maps
-rw-------   1 root root 0 Mar 18 10:35 mem
-r--r--r--   1 root root 0 Mar 18 10:35 mountinfo
-r--r--r--   1 root root 0 Mar 18 10:35 mounts
-r--------   1 root root 0 Mar 18 10:35 mountstats
dr-xr-xr-x   5 root root 0 Mar 18 10:35 net
dr-x--x--x   2 root root 0 Mar 18 10:35 ns
-r--r--r--   1 root root 0 Mar 18 10:35 numa_maps
-rw-r--r--   1 root root 0 Mar 18 10:35 oom_adj
-r--r--r--   1 root root 0 Mar 18 10:35 oom_score
-rw-r--r--   1 root root 0 Mar 18 10:35 oom_score_adj
-r--r--r--   1 root root 0 Mar 18 10:35 pagemap
-r--------   1 root root 0 Mar 18 10:35 patch_state
-r--r--r--   1 root root 0 Mar 18 10:35 personality
-rw-r--r--   1 root root 0 Mar 18 10:35 projid_map
lrwxrwxrwx   1 root root 0 Mar 18 10:35 root -> /
-rw-r--r--   1 root root 0 Mar 18 10:35 sched
-r--r--r--   1 root root 0 Mar 18 10:35 schedstat
-r--r--r--   1 root root 0 Mar 18 10:35 sessionid
-rw-r--r--   1 root root 0 Mar 18 10:35 setgroups
-r--r--r--   1 root root 0 Mar 18 10:35 smaps
-r--r--r--   1 root root 0 Mar 18 10:35 stack
-r--r--r--   1 root root 0 Jan 15 22:08 stat
-r--r--r--   1 root root 0 Mar 18 10:35 statm
-r--r--r--   1 root root 0 Jan 15 22:08 status
-r--r--r--   1 root root 0 Mar 18 10:35 syscall
dr-xr-xr-x 270 root root 0 Mar 18 10:35 task
-r--r--r--   1 root root 0 Mar 18 10:35 timers
-rw-r--r--   1 root root 0 Mar 18 10:35 uid_map
-r--r--r--   1 root root 0 Mar 18 10:35 wchan

  我们可以看到目录/proc/ P I D / p r o c / PID目录中存放了很多与当前进程相关的内存映射文件。其中文件/proc/ PID/cmdline文件中就记录了程序启动的详细命令。我们来看一下。

[root@qwfys ~]# cat /proc/30205/cmdline 
/usr/java/jdk1.8.0_201/bin/java-jar-Xdebug-Xnoagent-Xmx1024m-Xms1024m-XX:NewRatio=1-XX:SurvivorRatio=8-Dconfig.path=file:/xtwj/biz/xtwj-mall-goods-biz/;file:/xtwj/biz/common.properties-Dlogger.root=/logs/dubbo-jars-Dlogger.module=xtwj-mall-goods-biz/xtwj/biz/xtwj-mall-goods-biz/xtwj-mall-goods-biz.jar>>/xtwj/biz/xtwj-mall-goods-biz/out.nohup;theprogram(relativeusesPATH,cantakeargs)
[root@xtwj001 ~]# 

  是不是很神奇呢,大家可以试一下。

发布了244 篇原创文章 · 获赞 122 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/qwfys200/article/details/104939340