วิธีรันงาน cron ในฐานะผู้ใช้ที่ระบุได้อย่างไร?


66

ฉันต้องการทำงาน cron ในฐานะผู้ใช้เฉพาะบนเครื่องของฉัน ฉันจะระบุผู้ใช้สำหรับงาน cron ให้ทำงานอย่างไร

งาน cron จะทำงานบนเซิร์ฟเวอร์ (ทำงานบน Ubuntu 10.0.4) 'ผู้ใช้' คือผู้ใช้ที่ถูกสร้างขึ้นโดยเฉพาะสำหรับการทำงานด้านเซิร์ฟเวอร์เฉพาะ 'ผู้ใช้' เหล่านี้มีสิ่งที่เหมือนกัน:

  • ไม่สามารถเข้าสู่ระบบ
  • มีการ จำกัด การเข้าถึงโฟลเดอร์ / ไฟล์เฉพาะ

คำตอบ:


79

สมมติว่าคุณก็ไม่สามารถเข้าสู่ระบบและเพิ่มเข้าไปใน crontab /etc/cron.dของผู้ใช้ที่ใส่แฟ้มใน ควรจัดรูปแบบเป็น cronjob ปกติ แต่มีเขตข้อมูลเพิ่มเติม ก่อนที่คำสั่งจะเรียกใช้และหลังเวลาให้ผู้ใช้ คุณควรจะสามารถหาตัวอย่างที่มีอยู่แล้วในระบบของคุณ

ตัวอย่าง:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command

ฉันคิดว่านี่เป็นคำตอบที่ถูกต้อง ฉันจะต้องค้นหาตัวอย่างและตรวจสอบเพิ่มเติม
morpheous

2
บวกกับฉันนี่เป็นวิธีที่ดีที่สุดในการทำสิ่งที่คุณต้องการ ดูอย่างละเอียดในไฟล์ / etc / crontab และคุณจะเห็นว่าหลังจากเทมเพลตเวลาและก่อนคำสั่งจะมีคำว่า "root" เขียนอยู่ที่นั่น ซึ่งหมายความว่า "รูท" รันคำสั่งเหล่านั้น เพียงเพิ่มตารางเวลาของคุณเองและแทนที่จะ "รูท" ใช้ผู้ใช้คนใดก็ได้ นอกจากนี้โปรดทราบว่าถ้าคุณใช้ต่อ crontabs ของผู้ใช้ (ตามที่เอริค D คุ้นเคย) คุณอาจสูญเสียการทำงานของระบบ crontab แบบกว้าง (/ etc / crontab และ /etc/cron.d)
Patkos Csaba

3
ทางออกที่ดีกว่าที่ฉันคาดcrontab -u <user> -eไว้คือเก็บทุกอย่างไว้ในที่เดียวซึ่งคุณสามารถทำได้เหมือนรูท ฉันชอบที่จะจัดกลุ่มงาน cron ของฉันตามฟังก์ชั่น แต่แทนที่จะเป็นแค่ผู้ใช้ดังนั้นนี่จึงเป็นทางออกที่ดีกว่าสำหรับฉัน
Stuart H

41

ในฐานะ root เพื่อแก้ไข cron ของ user1:

crontab -u user1 -e

คุณยังสามารถเริ่มต้นคำสั่งของคุณด้วย:

su user1 -c foo bar

แต่บ่อยครั้งสคริปต์จะลดการเข้าถึงของตนเองเมื่อเริ่มต้นเป็นรูท


1

ฉันกำลังมองหาสิ่งนี้มาสองสามสัปดาห์และในที่สุดก็ใช้งานได้ ...

สร้างสคริปต์ของคุณในฐานะผู้ใช้ 1

ssh user1@ipaddress
nano hourly-event.sh

ป้อนคำสั่งบางอย่าง

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

ทำให้ปฏิบัติการได้

chmod 755 hourly-event.sh

แก้ไข crontab สำหรับ user1

sudo crontab -u user1 -e

ใส่บรรทัดที่ด้านล่างที่ชี้ไปยังสคริปต์ของคุณ

# m h  dom mon dow   command
*   *   *   *   *    bash ./hourly-event.sh

exit - บันทึกการเปลี่ยนแปลง (จะแสดงไดเรกทอรี / tmp เมื่อบันทึก ... ไม่เป็นไร)

รอให้ถึงนาที

เปิด yay.txt สร้างใหม่ของคุณ

nano /home/user1/yay.txt

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

คุณสามารถตรวจสอบรายการ crontab ใหม่ของคุณสำหรับ user1 ได้ที่: / var / spool / cron / crontabs / user1

ความสงบ


0

บางครั้งคุณอาจต้องการให้ผู้ใช้โหลดสภาพแวดล้อมของเขาโดยเฉพาะอย่างยิ่งเมื่อใช้ "rbenv", "nvm" เช่นนี้:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(ที่นี่คำสั่งsource ~/.bash_profileจะโหลดสภาพแวดล้อม Ruby หรือ Node ของคุณ

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