คำถามติดแท็ก ps

สำหรับคำถามเกี่ยวกับ ps คำสั่งสำหรับพิมพ์ข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ ps เองหรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้ยูทิลิตีบรรทัดคำสั่ง ps

3
การยกเลิกสคริปต์เชลล์ bash ที่รันในพื้นหลัง
ฉันมักจะใช้bashเชลล์สคริปต์เพื่อรันคำสั่งง่าย ๆ สำหรับไฟล์ที่แตกต่างกัน ตัวอย่างเช่นสมมติว่าฉันมีดังต่อไปนี้bashเชลล์สคริปต์เรียกscript.shว่ารันโปรแกรม / คำสั่งfooสามไฟล์ข้อความ"a.txt", "b.txt", "c.txt": #!/bin/bash for strname in "a" "b" "c" do foo $strname".txt" done นอกจากนี้สมมติว่าfoo $strname".txt"ช้าดังนั้นการเรียกใช้สคริปต์จะใช้เวลานาน (ตัวอย่างเช่นชั่วโมงหรือวัน) ด้วยเหตุนี้ฉันต้องการใช้nohupเพื่อให้การดำเนินการต่อไปแม้ว่าเทอร์มินัลจะปิดหรือตัดการเชื่อมต่อ ฉันต้องการให้สคริปต์ไปที่พื้นหลังทันทีดังนั้นฉันจะใช้&โอเปอเรเตอร์ ดังนั้นฉันจะใช้คำสั่งต่อไปนี้เพื่อโทรscript.sh: nohup bash script.sh & วิธีนี้ใช้งานได้ดีสำหรับการเรียกใช้สคริปต์ในพื้นหลังและไม่มีการแฮงค์ แต่ตอนนี้สมมติว่าฉันต้องการยุติการประมวลผลในบางจุดด้วยเหตุผลบางอย่าง ฉันจะทำสิ่งนี้ได้อย่างไร ปัญหาที่ฉันได้พบก็คือว่าโดยดูที่topผมเห็นเพียงที่สอดคล้องกับfoo "a.txt"ฉันสามารถยุติการfooโทรนั้นได้ แต่จากนั้นการโทรที่fooสอดคล้องกันจะ"b.txt"ได้รับการเรียกและจากนั้นฉันต้องยุติการโทรนั้นเช่นกันและต่อไปเรื่อย ๆ สำหรับไฟล์ข้อความหลายสิบหรือร้อยไฟล์ที่ระบุในforลูปมันจะกลายเป็นความเจ็บปวดที่จะยกเลิกทุก ๆไฟล์ทีละไฟล์foo! ดังนั้นฉันต้องยกเลิกเชลล์สคริปเองแทนการโทรเฉพาะที่ออกจากเชลล์สคริป เมื่อฉันพิมพ์คำสั่ง ps -u myusername myusernameชื่อผู้ใช้ของฉันอยู่ที่ไหนฉันได้รับรายการกระบวนการที่ฉันใช้อยู่ bashแต่ผมเห็นสองรหัสกระบวนการที่แตกต่างกันเรียกว่า ฉันจะรู้ได้อย่างไรว่ากระบวนการเหล่านี้ถ้ามีการสอดคล้องกับการเรียกร้องเดิมของฉันnohup bash script.sh &?

4
การค้นหา ID ของกระบวนการและฆ่ามัน
เมื่อใดที่ฉันต้องฆ่ากระบวนการพื้นหลังที่ฉันทำ ps -e | grep <process_name> ซึ่งพิมพ์บางอย่างเช่นนี้1766 ? 00:00:13 conkyจากนั้นฉันใช้ ID กระบวนการในการkillkill 1766มันชอบ มีวิธีใดที่ฉันสามารถทำให้สิ่งนี้ง่ายขึ้น? ทำให้เร็วขึ้นไหม ลดจำนวนการพิมพ์หรือไม่
16 process  grep  kill  ps 

5
จะฆ่ากระบวนการทั้งหมดด้วยชื่อที่กำหนดได้อย่างไร
ฉันเรียกใช้คำสั่งps -A | grep <application_name>และรับรายการกระบวนการเช่นนี้: 19440 ? 00:00:11 <application_name> 21630 ? 00:00:00 <application_name> 22694 ? 00:00:00 <application_name> 19440ฉันต้องการที่จะฆ่ากระบวนการทั้งหมดจากรายการ 21630, 22694, ฉันลองแล้วps -A | grep <application_name> | xargs kill -9 $1แต่ใช้งานได้กับข้อผิดพลาด kill: illegal pid ? kill: illegal pid 00:00:00 kill: illegal pid <application_name> ฉันจะทำสิ่งนี้ได้อย่างสง่างาม
16 grep  process  kill  ps 

5
ซ่อนอาร์กิวเมนต์ของโปรแกรมโดยไม่มีซอร์สโค้ด
ฉันต้องซ่อนอาร์กิวเมนต์ที่ละเอียดอ่อนบางอย่างกับโปรแกรมที่ฉันกำลังใช้งานอยู่ แต่ฉันไม่สามารถเข้าถึงซอร์สโค้ดได้ ฉันกำลังเรียกใช้สิ่งนี้บนเซิร์ฟเวอร์ที่ใช้ร่วมกันดังนั้นฉันจึงไม่สามารถใช้สิ่งที่ชอบhidepidเพราะฉันไม่มีสิทธิ์แบบ sudo นี่คือบางสิ่งที่ฉันได้ลอง: export SECRET=[my arguments]ตามด้วยการโทรศัพท์ถึง./program $SECRETแต่ดูเหมือนจะไม่ช่วย ./program `cat secret.txt`secret.txtมีการถกเถียงของฉันอยู่ที่ไหนแต่ผู้ทรงอำนาจpsสามารถดมความลับของฉันออกไปได้ มีวิธีอื่นในการซ่อนข้อโต้แย้งของฉันที่ไม่เกี่ยวข้องกับการแทรกแซงของผู้ดูแลระบบหรือไม่?
15 linux  process  ps  arguments 

1
<defunct> หมายถึงอะไรในเอาท์พุทของ ps?
ฉันได้ออกps -ef|grep javaคำสั่งและนี่เป็นหนึ่งในรายการที่ฉันได้รับ: subhrcho 875 803 0 Jan23 pts/5 00:02:27 [java] &lt;defunct&gt; อะไรคือสิ่งที่&lt;defunct&gt;อ้างว่าที่นี่? กระบวนการนั้นเป็นกระบวนการที่มี PID = 875 หรือไม่

2
จะเลือกแบบใด - คำสั่ง BSD หรือ Unix แบบที่มี
คำสั่งที่psมาพร้อมกับพารามิเตอร์จำนวนมากโดยเฉพาะอย่างยิ่งเนื่องจากพวกเขาให้ใช้ตัวเลือกในการเลือกระหว่างแฟล็กสไตล์ Unix และ BSD ฉันหวังว่าคุณจะได้รับจุดของฉันที่นี่ ดังนั้นเมื่อมีตัวเลือกดังกล่าวฉันควรเลือกความเข้ากันได้สูงสุดกับระบบ linux ทั้งหมดหรือไม่ (ความเข้ากันได้สูงสุดเป็นหนึ่งในลำดับความสำคัญเช่น) ฉันรู้ว่าสไตล์ Unix ค่อนข้างชัดเจน แต่คำสั่ง BSD ด้วยเหตุผลบางอย่างรวมถึงข้อมูลที่อ่านได้มากขึ้น (เช่นชื่อคอลัมน์คอลัมน์ CPU ฯลฯ ) แน่นอนโปรดแก้ไขให้ฉันถ้าฉันผิด แต่นั่นคือสิ่งที่ฉันรู้สึก
14 linux  bsd  ps 

4
โปรดอธิบายผลลัพธ์ของคำสั่ง ps -ef นี้หรือไม่
ส่วนหนึ่งของเอาท์พุทจากps -efคำสั่งที่ได้รับด้านล่าง: UID PID PPID C STIME TTY TIME CMD root 1 0 0 2012 ? 00:00:01 init [3] root 2 1 0 2012 ? 00:00:01 [migration/0] root 3 1 0 2012 ? 00:00:00 [ksoftirqd/0] root 4 1 0 2012 ? 00:00:00 [watchdog/0] root 5 1 0 2012 ? 00:00:00 …

3
ทำไม "ps axe" ไม่พบสคริปต์ทุบตีที่รันอยู่โดยไม่มี“ #!” หัวข้อ?
เมื่อฉันเรียกใช้สคริปต์นี้ตั้งใจให้ทำงานจนกว่าจะฆ่า ... # foo.sh while true; do sleep 1; done ... ฉันไม่สามารถหาได้โดยใช้ps ax: &gt;./foo.sh // In a separate shell: &gt;ps ax | grep foo.sh 21110 pts/3 S+ 0:00 grep --color=auto foo.sh ... แต่ถ้าฉันเพิ่งเพิ่ม#!ส่วนหัว " " ทั่วไปลงในสคริปต์ ... #! /usr/bin/bash # foo.sh while true; do sleep 1; done ... จากนั้นสคริปต์จะสามารถค้นหาได้โดยpsคำสั่งเดียวกัน... &gt;./foo.sh …

1
รับรายการกระบวนการสำหรับเด็กอย่างหรูหรา
ฉันต้องการรับรายการกระบวนการทั้งหมดที่ผู้ปกครองเป็น $ pid นี่เป็นวิธีที่ง่ายที่สุดที่ฉันเคยทำ: pstree -p $pid | tr "\n" " " |sed "s/[^0-9]/ /g" |sed "s/\s\s*/ /g" มีคำสั่งหรือวิธีที่ง่ายกว่าในการรับรายการกระบวนการลูกหรือไม่? ขอบคุณ!
13 process  ps 

3
จัดรูปแบบเอาต์พุตของ cputime สำหรับ ps
ฉันพยายามเขียนสคริปต์ที่สามารถตรวจสอบการใช้งาน CPU ของกระบวนการในช่วงเวลาหนึ่ง (เพื่อสร้างกราฟ) จนถึงตอนนี้เป็นคำสั่งที่ฉันใช้ ps -p $PROCID -o cputime,etimes ข้อกังวลเดียวของฉันคือผลลัพธ์ของ cputime ดูเหมือนจะเป็น[dd]hh:mm(หรือสิ่งที่คล้ายกันไม่สามารถจำด้านบนของหัวของฉันตอนนี้) มีวิธีการจัดรูปแบบ cputime ในไม่กี่วินาทีเช่น etime -&gt; etimes เพื่อให้ได้เวลาที่ผ่านไปในไม่กี่วินาที? แก้ไข: นี่คือผลลัพธ์ที่ฉันได้รับในขณะนี้ 2-03:01:33 2653793 ฉันต้องการพารามิเตอร์แรกที่จัดรูปแบบเป็นวินาทีไม่ใช่วันชั่วโมง: นาที: วินาที


4
มีวิธีให้เลือกหลายเงื่อนไขใน `ps` หรือไม่?
ดูเหมือนว่าฉันขาดอะไรบางอย่างที่เห็นได้ชัด แต่ยัง: ps -f -u myuser --ppid 1 ดูเหมือนว่าจะใช้เวลาเพียงดูที่ pid แม่ของกระบวนการและผลตอบแทนทุกกระบวนการที่มี pid แม่ของ 1 - myuserแม้ในขณะที่ผู้ใช้ไม่ได้ -uงานคนเดียวได้อย่างถูกต้อง (เลือกเฉพาะกระบวนการของการmyuser): ps -f -u myuser ฉันกำลังคิดถึงอะไร มีบางตัวในทางที่จะกรองตามเงื่อนไขในหลาย ๆps? แก้ไข: วิธีแก้ปัญหาปัจจุบันของฉัน: ps -f -p $(join &lt;(ps h --ppid 1 -o pid | sort) &lt;(ps h -u myuser -o pid | sort))
12 linux  ps 

1
'อะไร' ตัวแทนภายใต้ TTY
หากคุณใช้งานpsในเครื่องเทอร์มินัลคุณอาจเห็นสิ่งต่อไปนี้: คือ?อะไร ฉันSSH 'ไอเอ็นจีลงในเซิร์ฟเวอร์ Linux ดังนั้นฉันคิดว่ามันเป็นเพียงsshdตามที่กล่าวภายใต้CMDแต่ฉันอยากรู้ว่าสิ่งที่?จะพิจารณามีpts/1เพื่อเป็นตัวแทนเช่นสถานีของฉัน
12 ssh  process  tty  ps 

3
ทำไมฉันถึงได้รับสถานะการออกที่แตกต่างกันสำหรับ ps | grep ในสคริปต์หรือไม่
ฉันใช้สคริปต์ด้านล่าง: #!/bin/bash ps ax | grep -q [v]arnish if [ $? -eq 0 ];then echo varnish is running... exit 0 else echo "Critical : varnish is not running " exit 2 fi ผลลัพธ์เป็นเหมือน :: [root@server ~]# sh -x check_varnish_pro.sh + ps ax + grep -q '[v]arnish' + '[' 0 -eq …

3
จัดรูปแบบเอาต์พุตคำสั่ง 'ps' โดยไม่มีช่องว่าง
ฉันมีpsคำสั่งต่อไปนี้เพื่อรับคุณสมบัติเฉพาะของกระบวนการทำงานทั้งหมดพร้อมกับคุณสมบัติบางอย่าง: ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args" ฉันต้องการจัดรูปแบบเป็น CSV เพื่อให้สามารถวิเคราะห์ได้ หมายเหตุฉันวางส่วนท้ายเพื่อให้การแยกวิเคราะห์ง่ายขึ้น ฉันไม่คิดว่า,จะมีอยู่ในคอลัมน์อื่น ๆ - โปรดแก้ไขฉันหากฉันผิด ฉันจะลบช่องว่างออกได้อย่างไร
11 csv  ps 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.