Làm thế nào để chạy một công việc định kỳ để thực hiện mỗi phút?


7

Tôi đang cố gắng tạo một thư mục có dấu thời gian trong tên của nó trong /homethư mục. Tôi đã tạo công việc định kỳ sau với tư cách là người dùng root, nhưng nó không chạy. Tôi đang làm gì sai?

Sau đây là công việc định kỳ của tôi mà tôi đã tạo với đặc quyền người dùng root.

[root@bvdv-emmws01 home]# crontab -l
* * * * * /home/test.sh

Sau đây là nội dung của /home/test.sh. Cập nhật: thêm đường dẫn đầy đủ cho thư mục.

[root@bvdv-emmws01 home]# cat /home/test.sh 
#!/bin/bash
mkdir /home/test_$(date -d "today" +"%Y%m%d%H%M%S")

Giấy phép của /home/test.sh:

[root@bvdv-emmws01 home]# ls -ltr /home/test.sh
-rwxrwxrwx 1 root root 58 Dec  2 12:58 /home/test.sh

Tôi đã cập nhật các /etc/crontabtập tin. Tập tin đó hiện có các nội dung sau:

[root@bvdv-emmws01 home]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

* * * * * root /home/test.sh

Trạng thái của crond daemon

[root@bvdv-emmws01 home]# service crond status
crond (pid  1910) is running...

Nó có hoạt động khi bạn thực thi /home/test.shtrong shell không? Đầu ra của là ls -l /home/test.shgì?
Hauke ​​Laging

Bạn có thể muốn sử dụng các đường dẫn tuyệt đối trong kịch bản của mình.
John WH Smith

[root@bvdv-emmws01 home]# ls -l test.sh -rwxrwxrwx 1 root root 58 Dec 2 12:58 test.sh
Tahir Akram

@HaukeLaging khi tôi chạy nó qua shell, nó tạo thư mục có tên như test_00000000
Tahir Akram

1
Những thư mục đó sẽ được tạo trong thư mục chính của người dùng (ở đây rootđể một cái gì đó như /hoặc /root).
Stéphane Chazelas

Câu trả lời:


9

Một crontab được tạo crontab -evà liệt kê với crontab -lkhông nên có người dùng được chỉ định cho lệnh. Mục nhập của bạn nên đọc:

* * * * * /home/test.sh

Hoặc thay thế đặt dòng mà bạn có trong /etc/crontabthay thế.

Từ man 5 crontab(phần VÍ DỤ HỆ THỐNG CRON FILE):

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

Lưu ý câu cuối cùng.


Tôi đã thêm * * * * * root /home/test.shvào của tôi /etc/crontab. Nhưng vẫn không gặp may. Không thể xem thư mục trong của tôi /home.
Tahir Akram

@TahirAkram bạn có thể cat /home/test.shthay thế cat test.shvà dán đầu ra trong câu hỏi của bạn không?
Anthon

1
Là crond deamon chạy?
Albert

Test.sh có các quyền thực thi được đặt không?
YoMismo

@Albert [root@bvdv-emmws01 home]# service crond status crond (pid 1910) is running...Có, nó đang chạy.
Tahir Akram
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.