วิธีค้นหาไฟล์. pid สำหรับกระบวนการที่กำหนด


15

ฉันกำลังตั้งค่า monit และต้องการตรวจสอบแอพพลิเคชั่นของไพ ธ อน Monit ทำสิ่งนี้โดยดูที่ไฟล์. pid สำหรับกระบวนการ แต่ฉันไม่รู้ว่าจะเป็นเช่นไร

ฉันยังพยายามสร้างไฟล์ปฏิบัติการแบบง่าย ๆ ของตัวเองและรันที่นี่ด้วยฉันไม่สามารถหาได้ว่าไฟล์. pid ถูกสร้างขึ้นที่ใด

และกระบวนการทั้งหมดมีไฟล์. pid หรือไม่


5
กระบวนการบางอย่างนั้นไม่มี.pidไฟล์ แอปพลิเคชั่น (หรือสคริปต์เริ่มต้น) จำเป็นต้องสร้างอย่างชัดเจน
บาฮามาต

คำตอบ:


14

โดยปกติคุณจะพบไฟล์ PID สำหรับกระบวนการที่ถูกกำจัดในระบบ/var/run/Redhat / CentOS-style

คุณสามารถดูสคริปต์เริ่มต้นกระบวนการได้ตลอดเวลา ยกตัวอย่างเช่นภูต SSH /etc/init.d/sshdจะเริ่มต้นกับสคริปต์ใน บางครั้ง PID จะถูกกำหนดไว้ที่นั่น (ค้นหา pid, PID, PIDFILE, PID_FILE ฯลฯ )

อย่างไรก็ตาม daemons อื่น ๆ ส่วนใหญ่ในระบบสไตล์ RHEL จะส่ง/etc/init.d/functionsสคริปต์สำหรับคุณลักษณะทั่วไปบางอย่าง

# Set $pid to pids from /var/run* for {program}.  $pid should be declared
# local in the caller.
# Returns LSB exit code for the 'status' action.
__pids_var_run() {
        local base=${1##*/}
        local pid_file=${2:-/var/run/$base.pid}

สำหรับสิ่งที่แหล่ง/etc/init.d/functionsที่ PID /var/run/*.pidจะอาศัยอยู่ใน

สำหรับแอปพลิเคชันที่กำหนดเอง PID จะถูกกำหนดในสคริปต์ตัวตัด (หวังว่า) นักพัฒนาส่วนใหญ่ที่ฉันรู้จักปฏิบัติตามแบบแผนเดียวกันกับ daemons ด้านบน

ถ้าคุณทำบางสิ่งบางอย่างได้โดยไม่ต้องเผชิญหน้าไฟล์ PID จำไว้ว่าMonit สามารถตรวจสอบบน patern สตริงกระบวนการเช่นกัน


1
ewwhite- ขอบคุณ lot- แต่เมื่อฉันพยายามmonit procmatch anythingใน commandline monit: invalid argument -- procmatchฉันได้รับ ความคิดใด ๆ
Yarin

คุณกำลังใช้ Monit รุ่นใด (ประเภทmonit -V) OS / การกระจายใด
ewwhite

Monit 5.1.1 yummed เข้าสู่ CentOS 6
Yarin

นอกจากนี้สิ่งที่จะเป็นตัวเลือกของฉันสำหรับกระบวนการที่ไม่ใช่ daemon หลายกระบวนการ? คุณคิดอย่างไรเกี่ยวกับคำตอบนี้
Yarin

@yarin ดูเหมือนว่าคุณมี Monit จากพื้นที่เก็บข้อมูล EPEL รุ่นสำหรับ EL6 จากRPMForgeคือ 5.4
ewwhite

1

อีกวิธีที่ฉันใช้:

ฉันมีเซิร์ฟเวอร์ฐานข้อมูลที่ทำงานในโหมดฝังตัวและข้อมูลอยู่ในไดเรกทอรีของแอปพลิเคชันที่มีอยู่

ฐานข้อมูลมีบางอย่างเช่นไฟล์. pid แต่มันเรียกว่าล็อกไฟล์ หากต้องการค้นหาไฟล์ล็อคนี้ฉันแสดงรายการไฟล์ทั้งหมดที่แอปเปิดค้างอยู่:

$ ls -l /proc/18264/fd | cut -d'>' -f2

ที่ให้ฉันรายการยาวรวมทั้งซ็อกเก็ต, ท่อ, ไฟล์เซิร์ฟเวอร์ ฯลฯ ตัวกรองน้อยและฉันได้สิ่งที่ฉันต้องการ:

$ ls -l /proc/18264/fd | cut -d'>' -f2 | grep /home/ | cut -b40- | sort | uniq | grep titan

/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/00000000.jdb
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0.lck
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.lck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.