เชลล์, เชลล์ย่อย, แหล่งที่มา, กระบวนการพื้นหลัง, PID == ความสับสน


1

ฉันพยายามทำให้ใจของฉันตรงไปตรงมาว่าสิ่งเหล่านี้มารวมกันอย่างไร ตัวอย่างเช่นกับสคริปต์นี้:

#!/bin/bash

. script1
./script2
. script3 &
./script4 &

sleep 5

PID มีลักษณะอย่างไร กระบวนการแยกต่างหากคืออะไรและไม่มีอะไร กระบวนการพื้นหลังเหมือนกับ subshell หรือไม่


ดูเหมือนว่าคุณลืมถามsource script5และนั่นคือสิ่งที่ฉันกำลังมองหา หรืออื่น ๆ ที่คุณอาจต้องการที่จะลบ 'ที่มา' จากชื่อ ...
ปัญญาชน

sourceเหมือนกับจุดสแตนด์อโลนที่ฉันมีในตัวอย่าง
Pithikos

คำตอบ:


1

. script1- ไม่ใช่กระบวนการแยกต่างหาก script1 ถูกเรียกใช้งานในเชลล์ปัจจุบัน ดูhelp .

./script2 - เช่นเดียวกับการเรียกคำสั่งภายนอกเรียกใช้กระบวนการใหม่และรอให้เสร็จสิ้น

. script3 &- ใช่เป็นกระบวนการที่แยกต่างหาก ตัวอย่าง:

$ cat script3
sleep 300
$ . script3 &
[1] 15136
$ echo $$
15102
$ ps -ef | grep $$
jackman  15102 32659  0 09:43 pts/0    00:00:00 bash
jackman  15136 15102  0 09:44 pts/0    00:00:00 bash
jackman  15157 15102  0 09:44 pts/0    00:00:00 ps -ef
jackman  15158 15102  0 09:44 pts/0    00:00:00 grep --color=auto 15102

ดูคู่มือทุบตีรายการคำสั่ง :

หากคำสั่งถูกยกเลิกโดยผู้ควบคุมเครื่อง '&' เชลล์จะดำเนินการคำสั่งแบบอะซิงโครนัสในเชลล์ย่อย

./script4 & - ใช่เป็นกระบวนการที่แยกต่างหาก

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