Score:0

คาดว่าสคริปต์ไม่ทำงานใน cron แต่ทำงานได้สำเร็จในเทอร์มินัล

ธง us

นี่คือสคริปต์คาดหวังของฉันที่ชื่อว่า script.exp ซึ่งทำงานได้สำเร็จเมื่อเรียกใช้งานจากเทอร์มินัล แต่มันไม่ทำงานเมื่อตั้งเวลาผ่าน cronjob

#!/usr/bin/คาด -f
ตั้งหมดเวลา -1
วางไข่ ./sql_backup.sh
match_max 100,000
คาดหวัง -exact "ป้อนรหัสผ่าน:"
ส่ง -- "pass123\r"
คาดหวังอีฟ

สคริปต์ทุบตีของฉันชื่อ sql_backup.sh คือ:

#!/bin/bash
mysqldump -u root -p --all-databases > /home/user1/mysql/mysql-bkp.sql

และหน้าที่ของฉันคือ:

* * * * * /usr/bin/expect -f /home/user1/script.exp

ขอบคุณ

cn flag
ซ้ำกับ https://stackoverflow.com/q/69793254/7552 ? โปรดอย่าถามคำถามเดียวกันในที่ต่างๆ
Score:1
ธง it

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

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

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

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

cn flag
โปรดทราบว่า CWD สำหรับ cron คือ `/` ดังนั้น `./script.sh` จึงผิด

โพสต์คำตอบ

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