Score:1

งาน Cron ไม่ทำงานบน Ubuntu 20.04.2 LTS

ธง cl

ฉันได้สร้างงาน Cron เพื่อเรียกใช้สคริปต์ที่ตรวจสอบว่ากระบวนการกำลังทำงานอยู่หรือไม่ ในกรณีที่มันแค่พิมพ์ว่ากระบวนการกำลังทำงานอยู่ ถ้าไม่ใช่ มันจะพิมพ์ออกมาว่ากระบวนการไม่ได้ทำงานอยู่และเริ่มกระบวนการใหม่:

#!/bin/sh

SERVICE="start_server.py"
ถ้า ps -ef | grep "$SERVICE" | grep -v grep >/dev/null
แล้ว
    echo "start_server.py กำลังทำงาน"
อื่น
    echo "start_server.py หยุดทำงาน"
    python2.7 start_server.py &
ไฟ

ในฐานะผู้ใช้ Ubuntu ฉันสร้างงาน cron ต่อไปนี้โดยเรียกใช้ - crontab -e

* * * * * /home/ubuntu/mislaka/check_process.sh 2>&1 /home/ubuntu/mislaka/script_log.log

ด้วยเหตุผลบางอย่าง มันไม่ทำงานหรือเขียนผลลัพธ์ไปยังล็อกไฟล์

พยายามเริ่มบริการ cron ใหม่ พยายามสร้างงาน cron เป็นรูท เปลี่ยนสิทธิ์ทั้งหมดและผู้ใช้ที่เรียกใช้สคริปต์ แต่ไม่มีอะไรทำงาน

สคริปต์ถ้าฉันรันเองจะทำงานตามที่คาดไว้

เวอร์ชันอูบุนตู:

ไม่มีโมดูล LSB
รหัสผู้จัดจำหน่าย: Ubuntu
คำอธิบาย: Ubuntu 20.04.2 LTS
เผยแพร่: 20.04
ชื่อรหัส: โฟกัส

ขอบคุณล่วงหน้า

uz flag
Jos
การเปลี่ยนเส้นทางของคุณไม่ถูกต้อง แทนที่ `2>&1` ด้วย `>>` และเพิ่ม `2>&1` ต่อท้าย
FedKad avatar
cn flag
หรือแทนที่ `2>&1` ด้วย `&>>` เท่านั้น
in flag
"ในฐานะผู้ใช้ Ubuntu ฉันสร้างงาน cron ต่อไปนี้" อาจเป็นปัญหาเนื่องจากงาน cron จะทำงานเฉพาะเมื่อผู้ใช้รายนั้นเข้าสู่ระบบ โดยทั่วไปงานประเภทนี้จะทำในชื่อ `root': `sudo crontab -e `
hr flag
@FedonKadifeli afaik ที่จะใช้งานได้ก็ต่อเมื่อพวกเขาตั้งค่า `SHELL=/bin/bash` ใน crontab (ค่าเริ่มต้นคือ `/bin/sh`)
hr flag
@matigo afaik ไม่ถูกต้อง - cron ทำงานเป็น daemon และผู้ใช้ไม่จำเป็นต้องเข้าสู่ระบบเพื่อให้ crontabs อ่านได้
Avihai avatar
cl flag
@guiverc ขออภัยสำหรับข้อมูลที่พลาด: ไม่มีโมดูล LSB รหัสผู้จัดจำหน่าย: Ubuntu คำอธิบาย: Ubuntu 20.04.2 LTS เผยแพร่: 20.04 ชื่อรหัส: โฟกัส
rattkin avatar
fm flag
หากคุณต้องการโซลูชันที่พิสูจน์แล้วและเชื่อถือได้ ให้ดูที่ซอฟต์แวร์ตรวจสอบ เช่น monit มันถูกกำหนดค่าโดยไฟล์ ext อย่างง่าย และมันสามารถดูกระบวนการของคุณและเริ่มต้นใหม่ได้ ส่งอีเมล นอกจากนี้ยังสามารถดูพื้นที่ว่างในดิสก์ได้ หากดิสก์เต็ม ซึ่งเป็นสาเหตุของปัญหาที่เป็นไปได้มากมายในการผลิต
Avihai avatar
cl flag
@guirc ฉันเปลี่ยนชื่อตามที่แนะนำ
Score:1
ธง it

งานวิ่งผ่าน ครอน, หรือ ระบบ สคริปต์เริ่มต้นใช้งานไม่ได้ทำงานในสภาพแวดล้อมรันไทม์เดียวกันกับที่คุณมีบนเดสก์ท็อป ระบบ สคริปต์เริ่มต้นทำงานเป็น ราก. ไม่มีของคุณ เส้นทาง การเปลี่ยนแปลงหรือการตั้งค่าตัวแปรสภาพแวดล้อมอื่นๆ จะถูกส่งไปยังของคุณโดยอัตโนมัติ ครอน งาน. ตัวอย่างเช่นไม่มี $จอแสดงผลดังนั้นโปรแกรม GUI จึงต้องการการดูแลเป็นพิเศษ (อ่าน ผู้ชาย xhost).

หนึ่งสามารถตั้งค่าตัวแปรสภาพแวดล้อมสำหรับทุกคน ครอน งานใน crontab ไฟล์ อ่าน ผู้ชาย 5 crontab.

ดูผลลัพธ์ของ echo "=== id ===;id;echo "=== ชุด ==";set;echo "=== env ==";env | sort;echo "=== นามแฝง ===";นามแฝง ในแต่ละสภาพแวดล้อมของคุณ

ตั้งแต่ สั่งการ ส่วนหนึ่งของ crontab บรรทัดถูกตีความโดยค่าเริ่มต้น /ถัง/shซึ่งมีไวยากรณ์ที่ง่ายกว่า /ถัง/ทุบตีฉันขอแนะนำให้มี สั่งการ เป็นสายไปยัง ทุบตี สคริปต์ (ปฏิบัติการ, เมาต์, ขึ้นต้นด้วย #!/bin/bash) ซึ่งตั้งค่าสภาพแวดล้อมแล้วเรียกใช้โปรแกรมที่ต้องการ

Avihai avatar
cl flag
ฉันเริ่มต้นด้วย /bin/bash และมันก็ใช้งานไม่ได้เช่นกัน
Score:0
ธง cl

ปัญหาคือฉันต้องเปลี่ยนสคริปต์และแก้ไขงาน cron เพื่อเรียกใช้สคริปต์ที่ถูกต้องและเพิ่มเส้นทางแบบเต็มไปยังสคริปต์

โพสต์คำตอบ

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