经常使用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目录中存放了很多与当前进程相关的内存映射文件。其中文件/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 ~]#
是不是很神奇呢,大家可以试一下。