linux查找程序
① linux鏌ョ湅紼嬪簭榪愯岀姸鎬乴inux鏌ョ湅紼嬪簭榪愯
鍦╨inux涓嬫庝箞鏌ユ壘涓涓姝e湪榪愯岀殑榪涚▼鈥橈紵
ps-ef|grep榪涚▼鍚峱s-ef錛氭煡鐪嬫e湪榪愯岀殑榪涚▼|錛氱¢亾鍛戒護錛屽皢鍓嶈呯殑杈撳嚭浣滀負鍚庤呯殑杈撳叆grep榪涚▼鍚嶏細鍦ㄨ緭鍏ユ暟鎹涓鏌ユ壘榪涚▼淇℃伅
linux鎬庝箞鏌ョ湅鏈嶅姟鏄鍚﹁繍琛岋紵
鍙浠ュ湪Linux涓嬭緭鍏ュ懡浠わ細
1銆$servicesshdstatus2銆#serviceservicenamestatus鏄褰撳墠鐘舵3銆#chkconfig--listservicename鏄鏌ョ湅鍚鍔ㄧ姸鎬侊紝涔熷氨鏄鏄鍚﹀紑鏈鴻嚜鍔ㄥ惎鍔ㄦ敞錛
1銆佸傛灉service鍜宑hkconfig鎵句笉鍒幫紝鍙浠ヨ瘯璇/sbin/service鍜/sbin/chkconfig2銆佸傛灉鐢╱buntu濂藉儚鏄瑕佺敤/etc/init.d/servicenamestatus鏌ョ湅褰撳墠鐘舵侊紙servicename灝辨槸浣犺佹煡鐨勬湇鍔″悕錛夋墿灞曡祫鏂欙細鏌ョ湅鏌愰」鏈嶅姟褰撳墠鍚鍔ㄧ姸鎬佺殑鍏朵粬鏂瑰紡涓銆佸埄鐢ㄨ繘紼嬫潵鏌ョ湅鍛戒護閲宲s-aux鍀済repxxx鏄鏌ョ湅鏌愪釜榪涚▼鎴栬呮湇鍔℃槸鍚﹀瓨鍦ㄣ
浜屻佸埄鐢╯ervices鍛戒護1銆佹煡鐪嬪崟涓鏈嶅姟鐨勮繍琛岀姸鎬侊細service鏈嶅姟鍚峴tatus濡傦細#servicesshdstatusopenssh-daemon(pid3701)姝e湪榪愯
2銆佹煡鐪嬫墍鏈夋湇鍔$殑榪愯岀姸鎬侊細service_status-all
linux鎬庝箞鏌ョ湅涓涓榪涚▼鐨勬墽琛岀姸鎬侊紵
1錛屽啓涓涓鏈嶅姟錛岀敤exec鎴杙open鎵ц宲s鐨勫懡浠よ岋紝鏍規嵁璇ヨ繘紼嬬殑鍚嶅瓧鑾峰彇璇ヨ繘紼嬬殑pid銆
sprintf(cmd,"ps-ef|grep%s",name);
pstr=popen(cmd,"r");
鐒跺悗php瀹氭椂鐨勮鋒眰榪欎釜鏈哄櫒涓婄殑榪涚▼鐘舵侊紝濡傛灉榪涚▼鎸傛帀浜嗭紝鍙浠ュ仛涓棰勮︺
2錛屽傛灉鎯沖仛鐨勬洿澶氾紝鐩戣嗗綋鍓嶆瘡涓榪涚▼鐨勮祫婧愭秷鑰楋紝姣斿侰PU錛屽唴瀛橈紝鏍規嵁榪涚▼鐨剗d錛屽彲浠ュ幓鎷垮埌/proc/pid/status涓鐨勪竴浜涙暟鎹錛屾瘮濡傦細
//鑾峰彇榪涚▼鍗犵敤鍐呭瓨
unsignedintget_proc_mem(unsignedintpid){
charfile_name={0};
FILE*fd;
charline_buff={0};
sprintf(file_name,"/proc/%d/status",pid);
fd=fopen(file_name,"r");
if(nullptr==fd){
return0;
}
charname;
intvmrss;
for(inti=0;iVMRSS_LINE-1;i++){
fgets(line_buff,sizeof(line_buff),fd);
}
fgets(line_buff,sizeof(line_buff),fd);
sscanf(line_buff,"%s%d",name,vmrss);
fclose(fd);
returnvmrss;
}
鐒跺悗浣犲氨鍙浠ラ氳繃涓浜涘浘褰㈠仛涓浜涘姩鎬佸睍紺轟簡銆
linux涓濡備綍鏌ョ湅杞浠跺紑鍚鐘舵侊紵
鍙浠ュ湪Linux涓嬭緭鍏ュ懡浠わ細
1銆$servicesshdstatus
2銆#serviceservicenamestatus鏄褰撳墠鐘舵
3銆#chkconfig--listservicename鏄鏌ョ湅鍚鍔ㄧ姸鎬侊紝涔熷氨鏄鏄鍚﹀紑鏈鴻嚜鍔ㄥ惎鍔
linux濡備綍鏌ョ湅紼嬪簭鐨勮繍琛屽弬鏁幫紵
濡傛灉鏄鐜板湪榪愯岀殑紼嬪簭浣犲彲浠ヤ嬌鐢錛歱saux|grep紼嬪簭鍚嶅傛灉緋葷粺鑷甯︾殑鍛戒護錛岀洿鎺ョ湅man鎵嬪唽灝卞緢鏂逛究manls
② Linux中用於查找文件的命令有()
Linux中用於查找文件的命令世襪有()
A.find
B.search
C.locate
D.grep
正確答案搜數激:畢鍵find;locate
③ Linux如何根據進程ID查找啟動程序的路徑
正常運行中的進程樹關系如下(為了簡化,只顯示一部分進程):
$ ps x
PID TTY STAT TIME COMMAND
17279 pts/8 Ss 0:00 -bash
18618 pts/8 R+ 0:00 ps xf
18283 pts/8 S 0:00 A
18284 pts/8 S 0:00 A
18321 pts/8 S 0:00 a
18322 pts/8 S 0:00 a
出問題時進程的狀態為:
$ ps x
PID TTY STAT TIME COMMAND
17279 pts/8 Ss 0:00 -bash
18618 pts/8 R+ 0:00 ps xf
18283 pts/8 Z 0:00 A<defunct>
18284 pts/8 S 0:00 A
18321 pts/8 S 0:00 a
18322 pts/8 S 0:00 a
找到某進程啟動路徑的方法是:
1.我們可以從ps命令中得到僵死進程的PID,如上例中18283.
2.進入/proc目錄下以該PID命名的目錄中
3.輸入ls -l ,結果中 exe鏈接對應的就是可執行文件的全路經
$ ls -l /proc/18283
總計 0
dr-xr-xr-x 2 qhkf qhkf 0 01-06 11:14 attr
-r-------- 1 qhkf qhkf 0 01-06 11:14 auxv
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 cmdline
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 cpuset
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 cwd -> /v8t/qhkf/risk_b/kssmdb
-r-------- 1 qhkf qhkf 0 01-06 11:14 environ
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 exe -> /v8t/qhkf/risk_b/kssmdb/A
dr-x------ 2 qhkf qhkf 0 01-06 10:38 fd
-rw-r--r-- 1 qhkf qhkf 0 01-06 11:14 loginuid
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 maps
-rw------- 1 qhkf qhkf 0 01-06 11:14 mem
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 mounts
-r-------- 1 qhkf qhkf 0 01-06 11:14 mountstats
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 numa_maps
-rw-r--r-- 1 qhkf qhkf 0 01-06 11:14 oom_adj
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 oom_score
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 root -> /
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 schedstat
-r-------- 1 qhkf qhkf 0 01-06 11:14 smaps
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 stat
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 statm
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 status
dr-xr-xr-x 6 qhkf qhkf 0 01-06 11:14 task
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 wchan
剩下的就是排查問題了.OVER.
④ linux怎麼查看運行的程序
在命令行狀態下,輸入:ps -al 即可查看所有運行的程序。
其中:-a 選項:顯示所有的進程以及程序;
-l:按照長格式(long)進行顯示信息。
⑤ 如何在Linux中查看所有正在運行的進程
查看Linux中所有正在運行的進程 ,可以參考如下方法:
1、通過ps命令的-A或者-e參數來獲取系統中所有的進程,這兩個參數的作用一樣的。
⑥ Linux下查詢某進程對應的應用程序路徑
背景:
由於上個同事沒有交接清楚,發現機器上有很多路徑下含有nginx,系統service也配置了nginx,但是使用系統配置的service nginx status是stop狀態,實際有nginx進程在執行,需要定位到該進程所啟動的nginx位置。
解決方案:
1.先使用ps查詢出nginx的進程號此處記為PID
2.使用ll /proc/PID
3.查看cwd或者exe後的 -> 指向的路徑就是該進程對應的應用程序路徑