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

กระบวนการเป็นตัวอย่างของโปรแกรมคอมพิวเตอร์ที่กำลังดำเนินการ

2
วิธีค้นหาแท็บ Chrome จาก PID ของกระบวนการ
ฉันเปิดแท็บ Chrome จำนวนมากสำหรับหน้าเว็บ แต่ละแท็บมี PID ของตัวเองเช่น USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND t 3900 1.9 6.3 5718440 508660 ? Sl Jun08 188:31 /opt/google/chrome/chrome --type=gpu-process --channel=3862.0.1604359319 --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,12,42 --disable-accelerated-video-decode --gpu-vendor-id=0x8086 --gpu-device-id=0x2a42 --gpu-driver-vendor --gpu-driver-version ฉันสงสัยว่าจะหาแท็บใดจากแท็บที่เปิดอยู่จำนวนมากที่ตรงกับ PID ที่ระบุ
17 process  chrome 

4
killall ให้ฉัน "ไม่พบกระบวนการ" นอกจาก ps
ใครสามารถอธิบายให้ฉันความแตกต่างระหว่างkillและkillall? เหตุใดจึงไม่killallเห็นสิ่งที่psแสดง # ps aux |grep db2 root 1123 0.0 0.8 841300 33956 pts/1 Sl 11:48 0:00 db2wdog db2inst1 1125 0.0 3.5 2879496 143616 pts/1 Sl 11:48 0:02 db2sysc root 1126 0.0 0.6 579156 27840 pts/1 S 11:48 0:00 db2ckpwd root 1127 0.0 0.6 579156 27828 pts/1 S 11:48 0:00 …
17 linux  process  kill  ps 

2
ฉันจะตรวจสอบว่า PID ที่ระบุกำลังทำงานอยู่ได้อย่างไร
ฉันกำลังเขียนสคริปต์ Perl ที่แยกวิเคราะห์ logfiles เพื่อรวบรวม PID แล้วตรวจสอบว่า PID นั้นทำงานอยู่หรือไม่ ฉันพยายามคิดวิธีที่ดีที่สุดในการตรวจสอบ เห็นได้ชัดว่าฉันสามารถทำสิ่งที่ชอบ: system("ps $pid > /dev/null") && print "Not running\n"; อย่างไรก็ตามฉันต้องการหลีกเลี่ยงการเรียกระบบถ้าเป็นไปได้ ฉันจึงคิดว่าฉันสามารถใช้/procระบบไฟล์ได้ (ความสะดวกในการพกพาไม่ใช่เรื่องที่น่ากังวลนี่จะทำงานบนระบบ Linux เสมอ) ตัวอย่างเช่น: if(! -d "/proc/$pid"){ print "Not running\n"; } ปลอดภัยไหม ฉันสามารถเดาได้หรือไม่ว่าหากไม่มี/proc/$pid/ไดเรกทอรี PID ที่เกี่ยวข้องไม่ทำงานอยู่ ฉันคาดหวังเช่นนั้นเนื่องจาก AFAIK psเองได้รับข้อมูลจากตัวเอง/procแต่เนื่องจากเป็นรหัสการผลิตฉันจึงต้องการให้แน่ใจ ดังนั้นจะมีกรณีที่กระบวนการทำงานไม่มี/proc/PIDไดเรกทอรีหรือมี/proc/PIDไดเรกทอรีอยู่และกระบวนการไม่ทำงานหรือไม่ มีเหตุผลใดที่ต้องการแยกวิเคราะห์psมากกว่าการตรวจสอบการมีอยู่ของไดเรกทอรีหรือไม่?

2
ฆ่ากระบวนการที่เริ่มต้นใหม่อย่างต่อเนื่อง
เกิดอะไรขึ้นถ้า 'kill -9' ไม่ทำงาน? หรือวิธีการฆ่าสคริปต์ที่เริ่มกระบวนการใหม่ ไม่ได้ช่วยฉันด้วยซ้ำ ฉันมีสคริปต์หลามซึ่งเริ่มต้นโดยอัตโนมัติที่มี ID กระบวนการอื่นใช้พอร์ตเดียวกันเมื่อถูกฆ่าตายsudo kill -9 <pid>โดยใช้ $ lsof -i :3002 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 13242 ubuntu 3u IPv4 64592 0t0 TCP localhost:3002 (LISTEN) $ sudo kill -9 13242 $ lsof -i :3002 COMMAND PID USER FD TYPE DEVICE …
16 process  kill 

1
เป็นไปได้หรือไม่ที่จะรับ ID กลุ่มกระบวนการจาก / proc
ใน " /programming/13038143/how-to-get-pids-in-one-process-group-in-linux-os " ผมเห็นคำตอบทั้งหมดกล่าวขวัญและไม่มีการกล่าวขวัญps/proc "ps" ดูเหมือนจะไม่พกพาได้มาก (รุ่น Android และ Busybox คาดว่าจะมีข้อโต้แย้งที่แตกต่างกัน) และฉันต้องการแสดง pids ด้วย pgids ด้วยเครื่องมือที่ง่ายและพกพาได้ ใน /proc/.../status ฉันเห็นTgid:(ID กลุ่มเธรด), Gid:(รหัสกลุ่มเพื่อความปลอดภัยไม่ใช่สำหรับการจัดกลุ่มกระบวนการร่วมกัน) แต่ไม่ใช่PGid:... อะไรคือวิธีการอื่น ๆpsของการได้รับ pgid จาก pid?

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 &?

3
วิธีฆ่า daemon ด้วยชื่ออย่างสง่างาม
killallฉันมักจะฆ่ากระบวนการด้วย killall markdoc แต่ฉันไม่แน่ใจว่าคำสั่งนี้ยุติกระบวนการอย่างสง่างาม คำสั่งนี้ประสบความสำเร็จในการยุติอย่างงดงามหรือไม่? หากไม่เป็นเช่นนั้นฉันจะฆ่ากระบวนการด้วยชื่ออย่างสง่างามได้อย่างไร
16 process  kill 

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

3
ฉันสามารถ จำกัด กระบวนการให้มีระยะเวลา / รอบการทำงานของ CPU ได้หรือไม่?
เรามีสคริปต์ที่ทำงานบนเว็บเซิร์ฟเวอร์ของเราเรียกโดยการกระทำของลูกค้าซึ่งเริ่มต้นกระบวนการ unix เพื่อสร้างแคชไฟล์บางไฟล์ เนื่องจากกระบวนการนี้กระทำกับไฟล์ที่ลูกค้าของเราจัดหามาดังนั้นบางครั้งจึงใช้งานไม่ได้นานจนกระบวนการ PHP ซึ่งวางไข่หมดเวลาหรือใช้เวลา CPU มากจนระบบจะฆ่ามัน มีคำสั่งใดบ้างที่ฉันสามารถเรียกใช้ซึ่งจะ จำกัด เวลา CPU / รันไทม์ของกระบวนการหรือไม่ ฉันกำลังมองหาคำสั่ง/usr/bin/timeที่ฉันสามารถเรียกใช้คำสั่งนั้นและส่งผ่าน commandline ที่ฉันต้องการให้เรียกใช้และ จำกัด
16 process  limit 

1
เหตุใดส่วนใหญ่ของดิสก์ IO จึงเป็นของ jbd2 และไม่ใช่กระบวนการที่ใช้ IO จริง ๆ
เมื่อตรวจสอบดิสก์ IO ส่วนใหญ่ของ IO นั้นมาจาก jbd2 ในขณะที่กระบวนการดั้งเดิมที่ทำให้ IO สูงนั้นมีสัดส่วน IO ที่ต่ำกว่ามาก ทำไม? ต่อไปนี้iotopเป็นตัวอย่างเอาต์พุต (กระบวนการอื่นที่ละเว้น IO <1%):
16 process  io  disk 

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 

3
ฉันจะค้นหาขนาดหน่วยความจำภายในของกระบวนการใน busybox ได้อย่างไร
ฉันทำงานtopบน busybox และมันแสดงกระบวนการทั้งหมดและขนาดหน่วยความจำเสมือนของพวกเขา ฉันจะทราบได้อย่างไรว่าแต่ละกระบวนการใช้ RAM เท่าใด

3
ฟังเพื่อออกจากกระบวนการรับ pid $$
บอกว่าฉันมี pid อยู่ในมือ mypid=$$ มีคำสั่ง bash / system บ้างที่ฉันสามารถใช้ฟังเพื่อออกจากกระบวนการนั้นด้วย pid ที่กำหนด? หากไม่มีกระบวนการที่มี mypid อยู่ฉันเดาว่าคำสั่งควรล้มเหลว

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

1
วิธีที่เชื่อถือได้สำหรับกระบวนการเด็กในคุกโดยใช้ 'nsenter:'
ฉันรู้ว่า namespaces ลินุกซ์ในหมู่สิ่งอื่น ๆ อีกมากมายสามารถ leveraged ที่จะจัดการกับการ จำกัด และงูกระบวนการที่เด็กได้อย่างปลอดภัยโดยไม่ต้องมีโอกาสของพวกเขาใด ๆ ถูก zombied initและทิ้งบน แต่ฉันไม่ชัดเจนในรายละเอียดการใช้งาน ฉันจะใช้เครื่องมือที่จัดเตรียมโดยutil-linuxเช่นmountและnsenterเพื่อดูตรวจสอบและตรวจสอบให้แน่ใจว่ากระบวนการทั้งหมดที่เปิดใช้เป็นลูกหลานของเนมสเปซโดยตรงของกระบวนการอื่นได้อย่างไร

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