Score:1

Postfix ทำให้เกิดปัญหาเมื่อเปิดใช้งานบริการโดยใช้ systemctl และไม่เปิดขึ้นเมื่อบูต

ธง ae

บน ร็อคกี้ ลินุกซ์ เครื่องเวอร์ชัน 8.5 (ดาวน์สตรีม Red Hat Enterprise Linux ที่เข้ากันได้กับบั๊กสำหรับบั๊ก) ฉันได้กำหนดค่าการตั้งค่า Postfix + Dovecot หลังจากแก้ไขข้อผิดพลาดในการกำหนดค่าทั้งหมดแล้ว ฉันก็มาถึงจุดที่บริการทั้งสองจะเปิดเป็นอย่างน้อย

systemctl เปิดใช้งาน dovecot.service
systemctl เปิดใช้งาน postfix.service

หลังจากรีสตาร์ทเครื่อง ฉันเห็น Dovecot เปิดตัวอย่างถูกต้องเมื่อสอบถามโดยใช้ dovecot สถานะ systemctl. ในทางกลับกัน Postfix ไม่สามารถเริ่มต้นได้ การรายงาน:

[root@mail ~]# โปรแกรมแก้ไขสถานะ systemctl
â postfix.service - ตัวแทนการขนส่งจดหมายของ Postfix
   โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/postfix.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: ปิดใช้งาน)
   ใช้งานอยู่: ล้มเหลว (ผลลัพธ์: exit-code) ตั้งแต่ ...; 12 นาทีที่แล้ว
  กระบวนการ: 1419 ExecStart=/usr/sbin/postfix start (รหัส=ออก, สถานะ=1/ล้มเหลว)
  กระบวนการ: 1396 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  กระบวนการ: 1364 ExecStartPre=/usr/libexec/postfix/aliasdb (รหัส=ออก, สถานะ=0/สำเร็จ)

systemd[1]: กำลังเริ่มต้น Postfix Mail Transport Agent...
postfix/postfix-script[1506]: ร้ายแรง: ระบบเมล Postfix กำลังทำงานอยู่
systemd[1]: postfix.service: ออกจากกระบวนการควบคุมแล้ว, code=exited status=1
systemd[1]: postfix.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code'
systemd[1]: ไม่สามารถเริ่ม Postfix Mail Transport Agent

ตรวจสอบอย่างรวดเร็วโดยใช้ สถานะการแก้ไขภายหลัง แสดงว่าไม่ได้วิ่งจริงๆ น่าแปลกที่แม้ว่า เริ่มต้น postfix จากนั้นเริ่มบริการโดยไม่มีปัญหาใด ๆ กำลังสอบถาม สถานะการแก้ไขภายหลัง จากนั้นรายงานว่า Postfix ทำงานอย่างมีความสุขด้วย PID ใหม่ กำลังสอบถาม การแก้ไขสถานะ systemctl อีกครั้งหลังจากนั้นก็แสดงรายงานข้อผิดพลาดที่ไม่เปลี่ยนแปลงจากครั้งก่อน

ข้อผิดพลาดที่รายงานไม่สมเหตุสมผลอย่างไรก็ตาม ฉันสามารถ systemctl ปิดใช้งาน postfixรีสตาร์ทเครื่อง ตรวจสอบว่า Postfix ไม่ได้ใช้งานทั้งสองอย่างอย่างแท้จริง การแก้ไขสถานะ systemctl และ สถานะการแก้ไขภายหลังให้ลองเปิดใช้งานโดยใช้ systemctl เริ่ม postfix และได้รับข้อผิดพลาดเดียวกัน

นอกจากนี้ หากฉันปล่อยให้บริการ Postfix ปิดใช้งานใน systemd ให้รีบูตเครื่องและเริ่มด้วยเท่านั้น เริ่มต้น postfix, บริการเริ่มขึ้นแล้ว แต่ การแก้ไขสถานะ systemctl รายงานว่าโหลดแล้ว ไม่ทำงาน...

[root@mail ~]# postfix เริ่มต้น
postfix/postfix-script: เริ่มต้นระบบเมล Postfix
[root@mail ~]# สถานะการแก้ไขภายหลัง
postfix/postfix-script: ระบบเมล Postfix กำลังทำงาน: PID: 2169
[root@mail ~]# โปรแกรมแก้ไขสถานะ systemctl
â postfix.service - ตัวแทนการขนส่งจดหมายของ Postfix
   โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/postfix.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: ปิดใช้งาน)
   ใช้งาน: ไม่ใช้งาน (ตาย)
[รูท@เมล~]#

เหตุใด Postfix บน RHEL จึงลงทะเบียนเป็นบริการเมื่อปฏิเสธที่จะทำงานดังกล่าวอย่างเด็ดขาด แล้วอะไรคือวิธีที่เหมาะสมเพื่อให้แน่ใจว่า Postfix เริ่มต้นเมื่อบู๊ตเครื่อง

บันทึก: ฉันเหนื่อย chkconfig postfix เปิดอยู่ อย่างที่ฉันพบว่ามันแนะนำโดยคนออนไลน์ นั่นเป็นเพียงการส่งต่อคำขอไปที่ systemctl เปิดใช้งาน postfix.service ซึ่งนำฉันกลับไปสู่จุดเริ่มต้น

... ฉันต้องแฮ็คมันจริง ๆ ในการใช้งานไหม /etc/rc.localเมื่อเนื้อหาของไฟล์บอกว่ามีไว้เพื่อจุดประสงค์ด้านความเข้ากันได้เท่านั้น ไม่ควรใช้อีกต่อไป และฉันควรพิจารณาทำงานกับบริการ systemd หรือไม่

อัปเดต 1: ฉันไปกับสิ่งที่ดูเหมือนจะเป็นวิธีแก้ปัญหาที่สมเหตุสมผลในขณะนี้ - เริ่ม postfix โดยใช้ เริ่มต้น postfix สั่งเข้ามา /etc/rc.local. หลังจากรีบูต Postfix ยังคงไม่ทำงาน ตรวจสอบสถานะของบริการ rc-local โดยใช้ สถานะ systemctl rc-localบริการล้มเหลวในการเริ่มต้น เหตุผลในบันทึกตรงกับเหตุผลที่ระบุไว้ในบันทึกบริการ Postfix หลังจากที่ฉันเปิดใช้งานผ่าน systemctl - "ร้ายแรง: ระบบเมล Postfix กำลังทำงานอยู่แล้ว"Postfix ไม่สามารถเริ่มต้นเมื่อเริ่มต้นภายใต้เงื่อนไขทั้งหมด

Score:1
ธง cn

ฟังดูเหมือนความขัดแย้งของ SysV และ systemd ลองปิดบริการใน systemd แล้วรีบูตและดูว่าทำงานหรือไม่ มันน่าจะกำลังวิ่งอยู่

sudo systemctl ปิดใช้งาน posfix
sudo เริ่มต้น 6

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

ซึ่งจะทำให้คุณไม่มีข้อผิดพลาดและมีแนวโน้มว่าจะทำงานอยู่

หากใช้ SysV คุณควรเห็นลิงก์ด้านล่าง /etc/rc?.d (ที่ไหน ? คือตัวเลขตั้งแต่ 1 ถึง 6) ที่อ้างถึง postfix

นอกจากนี้ อาจเป็นไปได้ว่า postfix ตรวจพบว่ากำลังทำงานอยู่แล้วโดยการตรวจสอบไฟล์ PID แทนที่จะตรวจสอบว่ากระบวนการที่มี PID นั้นทำงานอยู่จริงหรือไม่ นั่นจะเป็นความพยายามครั้งต่อไปของฉัน ฉันมักจะหยุดการทำงานทั้งหมดก่อนที่จะเริ่มต้นเมื่อกระบวนการล้มเหลวในการเริ่มต้น ดังนั้นการล้างข้อมูลดังกล่าวจึงมีโอกาสถูกรีเซ็ต:

systemctl หยุด postfix
systemctl เริ่ม postfix
Marty Cagas avatar
ae flag
ขอบคุณสำหรับการตอบกลับของคุณ! หลังจากปิดใช้งาน Postfix ใน _systemd_ และรีบูตเครื่อง มันไม่ได้ทำงานทั้งเมื่อตรวจสอบ `systemctl status postfix` หรือ `postfix status` (ซึ่งตามความรู้ของฉันคือ wrapper ของตนเองสำหรับควบคุมเซิร์ฟเวอร์) ฉันจะตรวจสอบ SysV และดูว่าสามารถเปิดใช้งานเมื่อเริ่มต้นด้วยวิธีนั้นได้หรือไม่
Marty Cagas avatar
ae flag
ในท้ายที่สุด ปัญหาไม่ได้อยู่ที่ SysV แต่ฉันใช้ `reboot` แทน `init 6` หรือ `systemctl reboot` ที่ถูกต้อง ตามที่อธิบายไว้ในคำตอบอื่น [ที่นี่](https://unix.stackexchange.com/a/64385/383614) ความแตกต่างทางเทคนิคและในสถานการณ์นี้ ความแตกต่างก็เพียงพอที่จะทำลาย Postfixฉันไม่สามารถคิดออกได้หากไม่มีคำตอบของคุณ ดังนั้นจึงรู้สึกไม่ถูกต้องที่จะเขียนและยอมรับด้วยตัวเอง แต่เพื่อประโยชน์ของใครบางคนในอนาคตที่ต้องดิ้นรนกับปัญหาเดียวกัน คุณสามารถแก้ไขการกล่าวถึงสิ่งนี้ลงในของคุณ คำตอบ?
cn flag
@MartyCagas เสร็จแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา