Lệnh của Viking không hoạt động


2

Tôi muốn sắp xếp một công việc với atlệnh và thấy lỗi này:

    [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

Ngay cả giống nhau mà không có dấu ngoặc kép không hoạt động.

Trong khi đó, khi tôi lên lịch lệnh tương tự sẽ được thực thi như thế này:

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

Nó cho thấy rằng công việc được lên lịch, nhưng tại thời điểm đó tôi không thấy đầu ra. Không phải là đầu ra sẽ được nhìn thấy trên bàn điều khiển?

Câu trả lời:


3

Không, đầu ra sẽ không xuất hiện trên bàn điều khiển. Tôi hy vọng đầu ra sẽ được e mail gửi cho bạn. Thử

echo df –kh | at –m 01:47

để hỏi một cách rõ ràng về thư điện tử, hoặc

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

để ghi vào một tập tin.


1

Hãy thử với một cái gì đó như:

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

Nếu điều đó không hoạt động, bạn chưa util-linuxcài đặt với pty-helpercờ được bật hoặc bạn cần chỉ định màn hình mà bạn muốn đầu ra (có thể là vậy $DISPLAY)

Lưu ý rằng nếu bạn làm một cái gì đó như:

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

Nó có thể sẽ hoạt động nếu bạn đã cài đặt xterm (kiểm tra nó với bất kỳ thiết bị đầu cuối nào bạn sử dụng). Vì vậy, tôi đoán rằng vấn đề thực sự là lệnh đang được thực thi trong nền và bạn cần phải kéo chuỗi bạn muốn nhắc và làm bất cứ điều gì bạn cần với nó (có thể gửi cho bất kỳ người dùng nào có writehoặc walllệnh).


0

Hãy thử loại bỏ :, vì vậy:

echo 'df -kh' | at 0147

Nếu bạn nghĩ rằng câu trả lời là hữu ích, bạn có thể 'nâng cấp' nó. Bạn cũng có thể 'chấp nhận' câu trả lời bằng cách nhấp vào phác thảo của checkmark(sẽ có màu xanh), bằng cách này, những người tìm kiếm trên trang web sẽ biết rằng câu hỏi đã được trả lời tốt. Đó là cách các trang web stackechange hoạt động, cảm ơn;)
Gilles Quenot

6
Thông báo xác nhận job 4 at 2012-12-10 01:47cho thấy atđang phân tích cú pháp 01:47chính xác.
Scott

0

Một chút lưu ý phụ, nhưng vì tôi luôn phải vật lộn với đầu ra "thời gian bị cắt xén" at, tôi nghĩ rằng tôi chia sẻ cách khắc phục của mình cho điều đó. Giải pháp của tôi là bọc trong một chức năng và sử dụng, tha thứ hơn, dateđể sửa các thông báo thời gian bị cắt xén.

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}
}

Điều này hoạt động tốt nhất trên các hệ thống có cài đặt ngày GNU (hầu hết các hệ thống linux).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.