คำสั่ง“ at” ไม่ทำงาน


2

ฉันต้องการจัดตารางงานด้วย at คำสั่งและดูข้อผิดพลาดนี้:

    [root@labeir1 exm]# date
    Sun Dec  9 01:54:45 IST 2012
    [root@labeir1 exm]# at 01:47 "df -kh"
    syntax error. Last token seen: d
    Garbled time

แม้จะเหมือนกันโดยไม่มีคำพูดไม่ทำงาน

โดยที่เมื่อฉันจัดกำหนดการคำสั่งเดียวกันที่จะดำเนินการเช่นนี้:

    [root@labeir1 exm]# echo df -kh | at 01:47
    job 4 at 2012-12-10 01:47

มันแสดงให้เห็นว่างานถูกกำหนดเวลาไว้ แต่ในเวลานั้นฉันไม่เห็นผลลัพธ์ ไม่ใช่ว่าจะเห็นผลลัพธ์บนคอนโซลหรือไม่

คำตอบ:


3

ไม่เอาต์พุตจะไม่ปรากฏบนคอนโซล ฉันคาดว่าผลลัพธ์จะถูกส่งถึงคุณทางอีเมล ลอง

echo df –kh | at –m 01:47

เพื่อขอ e-mail หรือ

echo "df –kh > df_output.txt" | at 01:47

เพื่อเขียนลงไฟล์


1

ลองด้วยสิ่งที่ชอบ:

mesg y # this is just to make sure you may write to your user
at now + 1 min
at>df -kh | write $USER
at>^D

หากไม่ได้ผลคุณก็ไม่ได้ util-linux ติดตั้งพร้อมกับ pty-helper เปิดใช้งานการตั้งค่าสถานะหรือคุณต้องระบุการแสดงผลที่คุณต้องการเอาท์พุท (มันอาจจะเป็น $DISPLAY )

โปรดทราบว่าหากคุณทำสิ่งที่ชอบ:

at now + 1 min
at>xterm
at>^D 

อาจเป็นไปได้ถ้าคุณติดตั้ง xterm (ทดสอบด้วยเทอร์มินัลที่คุณใช้) ดังนั้นฉันเดาว่าปัญหาจริงคือคำสั่งจะถูกดำเนินการในพื้นหลังและคุณต้องดึงสตริงที่คุณต้องการให้พร้อมท์และทำสิ่งที่คุณต้องการด้วย (อาจส่งไปยังผู้ใช้ใด ๆ ด้วย write หรือ wall คำสั่ง)


0

ลองลบ :ดังนั้น:

echo 'df -kh' | at 0147

หากคุณคิดว่าคำตอบนั้นมีประโยชน์คุณสามารถ 'upvote' ได้ คุณสามารถ 'ยอมรับ' คำตอบด้วยโดยคลิกที่ร่างของ checkmark (จะเป็นสีเขียว) ด้วยวิธีนี้ผู้ที่ค้นหาในเว็บไซต์จะรู้ว่าคำถามได้รับคำตอบที่ดี นั่นเป็นวิธีที่เว็บไซต์ stackechange ทำงานขอบคุณ;)
Gilles Quenot

6
ข้อความยืนยัน job 4 at 2012-12-10 01:47 แนะนำว่า at กำลังแยกวิเคราะห์ 01:47 ได้อย่างถูกต้อง
Scott

0

บิตของบันทึกย่อด้านข้าง แต่ในขณะที่ฉันได้รับการดิ้นรนกับการส่งออก "เวลาที่อ่านไม่ออก" ของ atฉันคิดว่าฉันแบ่งปันการแก้ไขของฉันสำหรับสิ่งนั้น ทางออกของฉันคือห่อในฟังก์ชั่นและใช้, ให้อภัยมากขึ้น date เพื่อแก้ไขข้อความเวลาที่อ่านไม่ออก

function at {
  unset IFS
  MOMENT=$*
  AT=$(which at)

  # First try at to see if I finally figured out to produce non-garbled time
  if ${AT} ${MOMENT} 2>/dev/null
  then
    # worked allright, we can exit
    exit
  else
    # We produced garbled time (duh), so let's fix this with date
    MOMENT=$(date --date "${MOMENT}" +'%Y%m%d%H%M')
  fi

  # and try again
  ${AT} -t ${MOMENT}
}

สิ่งนี้ทำงานได้ดีที่สุดในระบบที่ติดตั้งวันที่ GNU (ระบบ Linux ส่วนใหญ่)

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