banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Sơ lược về crontab  XML
  [Question]   Sơ lược về crontab 15/03/2008 05:13:42 (+0700) | #1 | 119373
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
1. Cron là gì?
Cron là một tiện ích cho phép thực hiện các tác vụ một cách tự động theo định kỳ, ở chế độ nền của hệ thống. Crontab (CRON TABle) là một file chứa đựng bảng biểu (schedule) của các entries được chạy.

2. Cron làm việc thế nào?
Một cron schedule đơn giản là một text file. Mỗi người dùng có một cron schedule riêng, file này thường nằm ở /var/spool/cron. Crontab files không cho phép bạn tạo hoặc chỉnh sửa trực tiếp với bất kỳ trình text editor nào, trừ phi bạn dùng lệnh crontab. Một số lệnh thường dùng:

crontab -e: tạo hoặc chỉnh sửa file crontab
crontab -l: hiển thị file crontab
crontab -r: xóa file crontab
 

3. Cấu trúc của crontab
Một crontab file có 5 trường xác định thời gian, cuối cùng là lệnh sẽ được chạy định kỳ, cấu trúc như sau:
Code:
*     *     *     *     *     command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Nếu một cột được gán ký tự *, nó có nghĩa là tác vụ sau đó sẽ được chạy ở mọi giá trị cho cột đó.

4. Ví dụ
Giả sử tôi viết một đoạn script backup bookmarks trong Firefox như sau:
Code:
#!/bin/bash
date=`date +%F`

cp ~/.mozilla/firefox/13kee53o.default/bookmarks.html /mnt/data/BACKUP/bookmarks-$date.html


sau đó tôi cho script này chạy định kỳ vào 15h thứ Hai và thứ Năm hàng tuần bằng cách tạo một file crontab như sau:
Code:
$ crontab -e
0 15 * * 1,4 sh /mnt/data/linux/code/backupbookmarks.sh

Cuối cùng, nhớ khởi động lại cron daemon:
Code:
/etc/init.d/crond restart


ps: Để muốn "test" ngay xem crontab nó có hoạt động không, bạn có thể sửa lại đoạn script trên một chút:
Code:
#!/bin/bash
date=`date +%F-%H-%M-%S`

cp ~/.mozilla/firefox/13kee53o.default/bookmarks.html /mnt/data/BACKUP/bookmarks-$date.html

và file crontab bạn sẽ cho backup liên tục theo từng phút như sau:
0-59 * * * * sh /mnt/data/linux/code/backupbookmarks.sh 


Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 15/03/2008 07:28:12 (+0700) | #2 | 119394
SemiNoob
Member

[Minus]    0    [Plus]
Joined: 06/03/2008 01:27:31
Messages: 7
Offline
[Profile] [PM]

2. Cron làm việc thế nào?
Một cron schedule đơn giản là một text file. Mỗi người dùng có một cron schedule riêng, file này thường nằm ở /var/spool/cron. Crontab files không cho phép bạn tạo hoặc chỉnh sửa trực tiếp với bất kỳ trình text editor nào, trừ phi bạn dùng lệnh crontab. Một số lệnh thường dùng:

crontab -e: tạo hoặc chỉnh sửa file crontab
crontab -l: hiển thị file crontab
crontab -r: xóa file crontab
 

3. Cấu trúc của crontab
Một crontab file có 5 trường xác định thời gian, cuối cùng là lệnh sẽ được chạy định kỳ, cấu trúc như sau:
Code:
*     *     *     *     *     command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Nếu một cột được gán ký tự *, nó có nghĩa là tác vụ sau đó sẽ được chạy ở mọi giá trị cho cột đó.
 


Sorry ngắt lời bạn tí xíu. Bạn có thể chỉnh sửa file crontab trong Linux luôn bằng cách xài Software GNU Midnight Commander.
Ngoài ra bạn cũng có thể tạo File crontab (không có đuôi) trên máy Windows (cách này thường dùng trong trường hợp máy chủ là Linux máy con là Windows) bằng chương trình NOTEPAD rồi dùng Software WinSCP chuyển qua máy Linux.
Lưu ý sau khi chuyển qua máy Linux phải chạy lênh "dos2unix 'pathfile'" để chuyển sang loại file Linux đọc được.

Thân!
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/08/2009 22:40:04 (+0700) | #3 | 189302
[Avatar]
taivn07
Member

[Minus]    0    [Plus]
Joined: 01/04/2008 12:58:29
Messages: 1
Offline
[Profile] [PM]
thank... smilie
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 12/03/2010 12:32:35 (+0700) | #4 | 206700
[Avatar]
M@z
Member

[Minus]    0    [Plus]
Joined: 26/06/2006 19:55:36
Messages: 20
Offline
[Profile] [PM]
Trong ubuntu em làm theo hướng dẫn của pác

Code:
ubuntu@ubuntu-laptop:~$ su
Password: 
root@ubuntu-laptop:/home/ubuntu# crontab -e


Code:
# m h  dom mon dow   command
1 * * * *       sh /home/ubuntu/shell.sh


[Ctrl + o] --> lưu lại

Khởi động lại cron
Code:
root@ubuntu-laptop:/home/ubuntu# /etc/init.d/cron restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service cron restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart cron
cron start/running, process 2269


tiếp

Code:
root@ubuntu-laptop:/home/ubuntu# crontab -l
no crontab for root
root@ubuntu-laptop:/home/ubuntu#



sao không có gì hết vậy ???
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 12/03/2010 23:15:05 (+0700) | #5 | 206759
[Avatar]
nora
Elite Member

[Minus]    0    [Plus]
Joined: 20/09/2006 00:08:43
Messages: 360
Location: UK
Offline
[Profile] [PM]

M@z wrote:
Trong ubuntu em làm theo hướng dẫn của pác
..................

sao không có gì hết vậy ???  


Có lẽ chưa save properly

remove .selected_editor
chọn nano
ctrl+x sau khi edit
save file

nên tạo log cho cron

ví dụ:

~# touch /var/log/mycron.log

~#crontab -e

tạo 1 file để cron /root/file/cron.sh
dán cái này vô

*/1 * * * * sh /root/file/cron.sh >> /var/log/mycron.log 2>&1

save lại, file trên chạy 1 phút 1 lần


theo dõi xem cron có hoạt động ko, hay eror gì

~# tail -f /var/log/mycron.log

ngồi chờ 1 phút coi.

Không cần phải khởi động lại cron mỗi lần add crontab
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 21/04/2010 09:32:43 (+0700) | #6 | 209463
thirellouma
Member

[Minus]    0    [Plus]
Joined: 24/03/2010 21:41:15
Messages: 1
Offline
[Profile] [PM]
hay quá, topic đây rồi. Bạn cho mình hỏi cái là mỗi lần crontab -e có thể tạo nhiều lịch ko? vd như mình tạo lịch cho nó chạy 2 script và 2 thời điểm khác nhau ý smilie cảm ơn nhiều nhiều nhé
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 21/04/2010 09:38:16 (+0700) | #7 | 209465
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

thirellouma wrote:
hay quá, topic đây rồi. Bạn cho mình hỏi cái là mỗi lần crontab -e có thể tạo nhiều lịch ko? vd như mình tạo lịch cho nó chạy 2 script và 2 thời điểm khác nhau ý smilie cảm ơn nhiều nhiều nhé 

Được, mỗi cái bạn viết trên một dòng.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 08/05/2010 21:28:22 (+0700) | #8 | 210534
actuladn
Member

[Minus]    0    [Plus]
Joined: 25/08/2009 00:44:47
Messages: 89
Location: HCM
Offline
[Profile] [PM] [WWW]
crontab có thể chạy file tạo ra rule cho iptables không vậy anh?em có file test.sh có nội dung sau:
iptables -A INPUT -j QUEUE 


khi em dùng lệnh sh test.sh thì chạy bình thường. Nhưng dùng crontab thì theo cách của anh nora báo là test.sh: line2 iptables: command not found
Honeyboy Cung Cấp Mật Ong, Sữa Ong Chúa, Phấn Hoa | DHM Văn Phòng Phẩm Giá Rẻ
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/05/2010 00:45:39 (+0700) | #9 | 210545
Crunch
Member

[Minus]    0    [Plus]
Joined: 02/07/2008 03:41:11
Messages: 50
Offline
[Profile] [PM]

actuladn wrote:
crontab có thể chạy file tạo ra rule cho iptables không vậy anh?em có file test.sh có nội dung sau:
iptables -A INPUT -j QUEUE 


khi em dùng lệnh sh test.sh thì chạy bình thường. Nhưng dùng crontab thì theo cách của anh nora báo là test.sh: line2 iptables: command not found
 


Viết trực tiếp lệnh trên vào trong cron table hoặc nếu để trong 1 file script thì thêm #!/bin/bash vào đầu file.
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/05/2010 04:14:36 (+0700) | #10 | 210546
[Avatar]
nora
Elite Member

[Minus]    0    [Plus]
Joined: 20/09/2006 00:08:43
Messages: 360
Location: UK
Offline
[Profile] [PM]

Crunch wrote:

actuladn wrote:
crontab có thể chạy file tạo ra rule cho iptables không vậy anh?em có file test.sh có nội dung sau:
iptables -A INPUT -j QUEUE 


khi em dùng lệnh sh test.sh thì chạy bình thường. Nhưng dùng crontab thì theo cách của anh nora báo là test.sh: line2 iptables: command not found
 


Viết trực tiếp lệnh trên vào trong cron table hoặc nếu để trong 1 file script thì thêm #!/bin/bash vào đầu file. 


bỏ dòng trắng (Blank line) edit bằng nano
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/05/2010 12:22:39 (+0700) | #11 | 210561
Crunch
Member

[Minus]    0    [Plus]
Joined: 02/07/2008 03:41:11
Messages: 50
Offline
[Profile] [PM]

nora wrote:

Crunch wrote:

actuladn wrote:
crontab có thể chạy file tạo ra rule cho iptables không vậy anh?em có file test.sh có nội dung sau:
iptables -A INPUT -j QUEUE 


khi em dùng lệnh sh test.sh thì chạy bình thường. Nhưng dùng crontab thì theo cách của anh nora báo là test.sh: line2 iptables: command not found
 


Viết trực tiếp lệnh trên vào trong cron table hoặc nếu để trong 1 file script thì thêm #!/bin/bash vào đầu file. 


bỏ dòng trắng (Blank line) edit bằng nano
 

Báo vậy do bác ấy để trống line 1, viết câu lệnh ở line 2. Xoá đi thì nó lại báo lỗi ở line 1.
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/05/2010 12:39:15 (+0700) | #12 | 210563
actuladn
Member

[Minus]    0    [Plus]
Joined: 25/08/2009 00:44:47
Messages: 89
Location: HCM
Offline
[Profile] [PM] [WWW]
hihi!!! file em có 1 dòng ah, em dùng vi để delete khoảng trắng luôn. mỗi lần em post lên hỏi thì lại làm được. Nhưng em không hiểu tại sao với 1 dòng như trên khi thực hiện bằng lệnh thì chạy bình thường. Nhưng khi chạy crontab thì nó báo là không tìm thấy iptables. Và cần phải định nghĩa iptables cho nó
Dù sao cũng cám ơn mọi người nhiều
Honeyboy Cung Cấp Mật Ong, Sữa Ong Chúa, Phấn Hoa | DHM Văn Phòng Phẩm Giá Rẻ
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 09/05/2010 17:59:47 (+0700) | #13 | 210574
[Avatar]
nora
Elite Member

[Minus]    0    [Plus]
Joined: 20/09/2006 00:08:43
Messages: 360
Location: UK
Offline
[Profile] [PM]

actuladn wrote:
hihi!!! file em có 1 dòng ah, em dùng vi để delete khoảng trắng luôn. mỗi lần em post lên hỏi thì lại làm được. Nhưng em không hiểu tại sao với 1 dòng như trên khi thực hiện bằng lệnh thì chạy bình thường. Nhưng khi chạy crontab thì nó báo là không tìm thấy iptables. Và cần phải định nghĩa iptables cho nó
Dù sao cũng cám ơn mọi người nhiều 


cron ko chạy các lệnh từ shell mà phải từ path/to/command í dụ /usr/bin/*

trong cron em có thể tìm iptables command bằng cách


user@host~#which iptables

out put tương tự

/sbin/iptables

thay cái path này vào trong cron tab. thay vì chỉ iptables
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 13/05/2010 12:43:30 (+0700) | #14 | 210798
actuladn
Member

[Minus]    0    [Plus]
Joined: 25/08/2009 00:44:47
Messages: 89
Location: HCM
Offline
[Profile] [PM] [WWW]
ah được rồi, cám ơn anh nhiều
Honeyboy Cung Cấp Mật Ong, Sữa Ong Chúa, Phấn Hoa | DHM Văn Phòng Phẩm Giá Rẻ
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 05/03/2011 06:14:59 (+0700) | #15 | 232427
netviet
Member

[Minus]    0    [Plus]
Joined: 03/03/2011 08:03:00
Messages: 7
Offline
[Profile] [PM]

nora wrote:

M@z wrote:
Trong ubuntu em làm theo hướng dẫn của pác
..................

sao không có gì hết vậy ???  


Có lẽ chưa save properly

remove .selected_editor
chọn nano
ctrl+x sau khi edit
save file

nên tạo log cho cron

ví dụ:

~# touch /var/log/mycron.log

~#crontab -e

tạo 1 file để cron /root/file/cron.sh
dán cái này vô

*/1 * * * * sh /root/file/cron.sh >> /var/log/mycron.log 2>&1

save lại, file trên chạy 1 phút 1 lần


theo dõi xem cron có hoạt động ko, hay eror gì

~# tail -f /var/log/mycron.log

ngồi chờ 1 phút coi.

Không cần phải khởi động lại cron mỗi lần add crontab
 


mình có file shell backup: ftpbackup.sh
nội dung:
#!/bin/bash
USER='user'
PASS='123456'
SERVER='192.168.1.4'

SOURCE='/duongdan/folderbackup'

lftp - u $USER,$PASS $SERVER <<EOF
mirror -R $SOURCE
EOF


nội dung crontab -e
*/1 * * * * /bin/bash /duongdan/runcron/ftpbackup.sh >> /duongdan/runcronlog/filecron.log 2>&1

thì xem file log báo lỗi
line 8 lftp: command not found

kiểm tra lftp:
whereis lftp
trả về
/usr/local/bin/lftp /usr/local/etc/lftp.conf /usr/local/lib/lftp

ftpserver máy 192.168.1.4 chạy tốt

đang bó tay với lỗi này
rất mong các huynh cứu giúp.
cảm ơn nhiều
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 05/03/2011 08:11:56 (+0700) | #16 | 232429
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Sửa thành đường dẫn đầy đủ là OK thôi. Tốt nhất là luôn luôn dùng đường dẫn đầy đủ khi viết script để chạy cron job.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 03/03/2012 20:20:21 (+0700) | #17 | 256769
xtdv
Member

[Minus]    0    [Plus]
Joined: 09/07/2008 21:22:31
Messages: 9
Offline
[Profile] [PM] [WWW] [Yahoo!]
Cho em hỏi một chút ạ, liệu khi mình dùng crontab -e, mình có dược phép bỏ nhiều lệnh vào trong này không ạ? Ví dụ như sau:

Code:
0 15 * * 1,4 sh /mnt/data/linux/code/backupbookmarks.sh
0 15 * * 1,4 sh /usr/bin/test.sh
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 04/03/2012 21:51:58 (+0700) | #18 | 256865
dancerhp
Member

[Minus]    0    [Plus]
Joined: 14/09/2009 12:22:00
Messages: 11
Offline
[Profile] [PM]



Cái posting time của HVA có vẻ như bị trục trặc??
[Up] [Print Copy]
  [Question]   Sơ lược về crontab 05/03/2012 11:04:00 (+0700) | #19 | 256915
[Avatar]
scout
Member

[Minus]    0    [Plus]
Joined: 28/07/2007 19:48:01
Messages: 7
Offline
[Profile] [PM]
Tớ chẳng thấy lỗi ở đâu.
Một bài năm 2011, một bài 2012 mà smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|