เรียกใช้งาน Cron งานด้วยสิทธิ์ Sudo


1

อย่างเคร่งครัดเพื่อวัตถุประสงค์ในการเรียนรู้ (อาจเป็นการบำรุงรักษาเช่นกัน) ฉันกำลังพยายามให้งาน Cron ล้างถังขยะของฉันวันละครั้ง

ฉันเปิดเทอร์มินัลแล้วป้อนคำสั่งcrontab -eเพื่อเข้าถึงเครื่องมือแก้ไข VI เพื่อเพิ่มคำสั่ง ฉันได้เข้าสู่โหมดแทรกและเพิ่ม* * * * * sudo rm -rf ~/.Trash/*กดปุ่ม Escape เพื่อออกและออกจาก VI ด้วย:wq!

สคริปต์นี้โดยเฉพาะฉันได้ทำงานทุกนาทีเพื่อดูว่ามันใช้งานได้หรือไม่ ฉันคิดว่ามันอาจเป็นปัญหากับ cron ที่ไม่มีสิทธิ์เข้าถึงรูทดังนั้นฉันจึงเพิ่มบรรทัดเดียวกันลงในsudo crontab -eไฟล์และดูเหมือนจะไม่บันทึก

ความคิดใดที่อาจผิดกับงาน cron นี้


ทำไมคุณกำลังพยายามที่จะลบไฟล์จากผู้ใช้ของคุณ.Trashที่มีsudoอยู่ในสถานที่แรก? การกำหนดค่า sudoers ของคุณถูกตั้งค่าเป็น NOPASSWD หรือไม่
techraf

@techraf Cron มีสิทธิ์ใช้งาน sudo โดยอัตโนมัติหรือไม่? ถ้าไม่ฉันจะใช้สิทธิ sudo ภายในงาน Cron ได้อย่างไร
MacMania

ฉันถามคำถามสองข้อกับคุณ
techraf

คำตอบ:


1

คุณคิดว่าคุณต้องใช้ sudo คุณทำไม่ได้ คุณไม่ได้พยายามล้างโฟลเดอร์ถังขยะของรูท คุณมีสิทธิ์ในการลบไฟล์ในของคุณเอง~/.Trashโฟลเดอร์เพื่อให้คุณไม่ต้องกลายเป็นราก (ซึ่งเป็นสิ่ง sudo ไม่) rmที่จะทำ

คุณสามารถใช้:

* * * * * rm -rf ~/.Trash/*

หมายเหตุฉันยังแนะนำให้ใช้~ในคำสั่งที่เป็นอันตรายเช่นนี้ (ทุกครั้งที่คุณโทรหาrm -rfมันอาจเป็นอันตราย) ใส่เส้นทางแบบเต็มไปยัง.Trashโฟลเดอร์เพื่อให้ชัดเจนว่าจะเกิดอะไรขึ้นเมื่อเรียกใช้งานบรรทัด /Users/yourusername/.Trash/สิ่งที่ชอบ ดังนั้น:

* * * * * rm -rf /Users/yourusername/.Trash/*

ตำแหน่งที่คุณแทนที่yourusernameด้วยชื่อผู้ใช้จริงของคุณบนโฮสต์


ขอบคุณสำหรับคำตอบที่อธิบายได้ดี! นั่นทำให้รู้สึกและใช้งานได้!
MacMania

re ~ ut ไม่ใช่คำแนะนำที่ไม่ควรใช้ มันใช้งานไม่ได้ใน cron
Mark

3

หากคุณต้องการระบุ crontab ของผู้ใช้รูทคุณต้องใช้-uตัวเลือก

sudo crontab -e -u root

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

คำสั่งต่อไปนี้จะลบไฟล์ทั้งหมดที่เก่ากว่า 15 วัน

find ~/.Trash/ -type f -mtime +15 -exec rm {} \;

ตอนนี้ ... ที่กล่าวว่า ...

cronlaunchdได้รับการเลิกใช้ ฉันจะใช้เวลาสักครู่และเรียนรู้วิธีสร้าง.plistไฟล์ XMLlauchdและใช้บริการนั้นแทนcron


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