Mac OS X: ที่คำสั่งไม่ทำงาน


42

ฉันจะกำหนดเวลางานโดยใช้คำสั่ง at ที่นี่ฉันลองคำสั่งต่อไปนี้:

$ at now + 1 minute
echo 'Test at command'
<EOD>

ฉันเห็นว่างานถูกกำหนดเวลาโดยใช้ที่ -l อย่างไรก็ตามฉันไม่เห็นเสียงก้อง

ฉันเดาว่าฉันอาจต้องเพิ่มผู้ใช้ในไฟล์ at.allow ฉันหา at.allow ใน Mac ของฉันไม่ได้ (Snow Leopard) ไม่แน่ใจว่าฉันต้องทำอย่างไรเพื่อทดสอบคำสั่งนี้


ฉันพยายามอ่านข้อมูลจากคนที่ มันบอกว่า "ถ้าไฟล์ _PERM_PATH / at.allow มีอยู่ชื่อผู้ใช้ที่กล่าวถึงจะได้รับอนุญาตให้ใช้ที่ ... ถ้า ... ไม่มี ... at.allow, _PERM_PATH / at.deny ถูกตรวจสอบ .. " ฉัน ไม่แน่ใจว่า _PERM_PATH คืออะไร

ในกรณีของ Apple OSX Leopard PERM_PATH สำหรับ "at" คือ / usr / lib / cron
Richard Hoskins

สำหรับ Mac OS X Lion มัน/var/at
Stefan Schmidt

คำตอบ:


40

หากต้องการเปิดใช้งานatrundaemon ที่ต้องการman atrunให้ดำเนินการดังนี้:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

เป็น root (เช่นผ่านsudo) เมื่อคุณทำเสร็จแล้ว/var/at/จะเป็นไดเรกทอรีหลัก (แม้ว่าวิธีที่ง่ายที่สุดคือใช้atเป็น root - เช่นอีกครั้งโดยsudo! -)


ฉันรู้ว่าคุณต้องเป็นรูทเพื่อเปิดใช้งาน atrun daemon แต่คุณไม่จำเป็นต้องรูทเพื่อรันคำสั่ง "at" (ยกเว้นว่าคำสั่งเหล่านั้นจำเป็นต้องมีรูท)
Richard Hoskins

1
การเปิดใช้งานหรือ atrun นี้ไม่ได้รีบูตหรือไม่
Eric O Lebigot

ตามหน้า man ใช่ แต่ฉันไม่ได้ลองเลย
Stefan Schmidt

1
ถ้า/var/at/at.denyว่างเปล่าคุณไม่จำเป็นต้องรูทต่อคิวที่งานไม่เช่นนั้นคุณสามารถเพิ่มชื่อผู้ใช้ของคุณ/var/at/at.allowได้
Stefan Schmidt

ฉันควรอ่าน man page ก่อน ... ขอบคุณ!
polym

13

ใน Snow Leopard คุณต้อง:

  1. แก้ไข/System/Library/LaunchDaemons/com.apple.atrun.plistเปลี่ยนโหนดเด็กพิการจาก->truefalse

  2. ยกเลิกการโหลดปัจจุบัน/System/Library/LaunchDaemons/com.apple.atrun.plistด้วย:

    sudo launchctl unload -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    

    จากนั้นโหลดเวอร์ชันที่แก้ไข

    sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
  3. ทดสอบว่าใช้งานได้กับ:

    echo blah | at now+1
    
  4. ในกรณีที่เสียงสะท้อนล้มเหลวด้วยเหตุผลที่แตกต่างกันอย่างน้อยคุณควรเห็นคิวที่ได้รับการล้างด้วย:

    atq
    

1
นี่เป็นสิ่งเดียวที่ทำงานกับฉันใน OSX 10.10 โยเซมิตี
โคลินดีน

5

ฉันลองสิ่งนี้ใน OS X Lion และดูเหมือนว่าจะใช้งานได้

เปิดใช้งานatrundeamon ก่อน:

launchctl load -w
/System/Library/LaunchDaemons/com.apple.atrun.plist

แล้วเพิ่ม [ชื่อผู้ใช้ของคุณ] /var/at/at.allowเพื่อ

เมื่อดำเนินการคุณจะได้รับผลลัพธ์ที่ /var/mail/[your username]

ฉันพบว่ารายการที่รออยู่นั้นbatchใช้เวลาไม่กี่นาทีในการดำเนินการจริง


2

คนอื่น ๆ ได้ตอบเกี่ยวกับการที่ถูกปิดใช้งานบนระบบปฏิบัติการ Mac OS X และผมไม่ทราบว่าเกี่ยวกับที่ แต่มีปัญหาอื่น: ที่ไหนที่คุณคาดหวังของคุณก้องคำสั่งในการพิมพ์ข้อความของตนหรือไม่ ในระบบ Unix อื่น ๆ ที่ฉันใช้มันไม่ได้พิมพ์ในหน้าต่างเชลล์เดียวกันกับที่คุณให้คำสั่งat โปรดจำไว้ว่าเมื่อในงานมีการเรียกใช้คุณอาจไม่ได้ถูกบันทึกไว้ในใด ๆ เพิ่มเติม

ลองเขียนบางสิ่งลงในไฟล์แทนและดูว่าไฟล์นั้นปรากฏในเวลาที่เหมาะสมหรือไม่


หน้า man ระบุว่าผลลัพธ์จะถูกส่งถึงคุณ
Stefan Schmidt

@Stefan: ใช่และมันทำงานได้ดีในปี 1980 เมื่อจดหมายถูกจัดการในเครื่องเดียวกัน แต่ประสบการณ์ของฉัน (กับ Unix ประเภทอื่น ๆ กว่า Mac OS X) คือทุกวันนี้คุณไม่ควรคาดหวังว่าจะได้รับจดหมายใด ๆ
Thomas Padron-McCarthy

0

การติดตั้ง OS X (10.4) ของฉันบอกไว้ในman at:

บันทึก
     at, batch, atq, atrm ทั้งหมดถูกปิดการใช้งานโดยค่าเริ่มต้นใน Mac OS X

คุณเปิดใช้งานatrunตามคำแนะนำที่นั่นหรือไม่


ฉันพยายามหาที่ atrun ใน Mac ของฉัน จากเว็บตัวเลือกอื่นคือการเพิ่มผู้ใช้ใน at.allow ฉันไม่พบไฟล์นี้ (at.allow)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.