Bagaimana cara menghapus atau menghapus pekerjaan cron tunggal menggunakan perintah linux?

40

Saya telah membuat pekerjaan cron untuk situs saya yang tercantum di bawah ini dan mereka berfungsi dengan baik. Saya mencetak semua pekerjaan cron dengan menggunakan skrip PHP ini:

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

Output yang mana:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

Sekarang saya ingin menghapus atau menghapus satu cron job dari server saya melalui perintah. Misalnya saya ingin menghapus " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" cron job dari server.

Saya mencoba crontab -rperintah yang menghapus semua pekerjaan cron dari server saya tetapi saya ingin menghapus pekerjaan cron tertentu.

Bisakah Anda membantu saya mencari solusinya?

anumavu
sumber

Jawaban:

61
  1. Untuk menambahkan pekerjaan ke crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Untuk menghapus pekerjaan dari crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Hapus semuanya dari crontab:

    crontab -r
    

Tidak ada yang rumit: -STDOUT ada di Linux!

Greg Hanis
sumber
1
Greg: Selamat Datang di Tanya Ubuntu! ;-) Bisakah Anda meninjau suntingan saya dan juga meninjau bantuan pengeditan untuk meningkatkan keterbacaan jawaban Anda di masa depan ... ;-)
Fabby
4
Silakan ganti 1. Untuk menambahkan pekerjaan ke crontab dengan (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Saya pikir crontab -l 2 > /dev/nullini hanya perlu jika Anda tidak ingin melihat pesan no crontab for <user>jika tidak ada pekerjaan cron yang ada. Ngomong-ngomong, kita tidak perlu opsi -u mobmanjika kita ingin menambahkan pekerjaan cron untuk pengguna saat ini.
baptx
23

Dari jenis root prompt

crontab -e

Anda sekarang dapat mengedit file dan menghapus baris yang ingin Anda hapus. Anda juga dapat menggunakan ini untuk mengedit crontab untuk pengguna jika Anda memiliki prompt untuk pengguna tersebut.

Omong-omong: Saya lebih suka menambahkan cronjobs /etc/crontab. Tampak sedikit lebih fleksibel bagi saya.

Rinzwind
sumber
Ini tampaknya lebih mudah dan lebih masuk akal daripada skrip sihir, tetapi saya berharap saya lebih seperti penyihir.
Jason Sebring
Bagus untuk perubahan manual, tetapi untuk otomatisasi periksa skrip di atas -
AFP_555
7

Lihat Pengguna Cronjob

Gunakan sintaks berikut untuk melihat cronjob pengguna waqleh :

crontab -u waqleh -l

Lihat Root Pengguna Cronjob

Cukup ketik perintah berikut:

crontab -l

Ini harus mencantumkan isi skrip crontab.

Lihat / etc / crontab

Cronjob juga dapat dijalankan dari file / etc / crontab. Untuk melihatnya, masukkan:

less /etc/crontab

Hapus semua pekerjaan cron

Jika dan hanya jika Anda ingin menghentikan semua pekerjaan cron, Anda dapat menghapus seluruhnya dengan:

crontab -r

Ini menghapus seluruh file crontab jadi berhati-hatilah jika Anda memiliki pekerjaan cron lain yang terdaftar di sana!

Hapus pekerjaan cron tertentu

Buka file cron dan hapus cron yang ingin Anda hapus

crontab -e

setiap baris mewakili pekerjaan cron. Anda dapat menghapus semua cron dengan menggunakan ctrl + k lalu simpan dan keluar

Wakaf
sumber
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l daftar pekerjaan crontab saat ini

grep -v filter beberapa baris

crontab - menambahkan semua barang cetakan ke dalam file crontab.

Diego D
sumber
0

Anda dapat menjalankan crontabtanpa argumen, dan memberinya crontab baru melalui stdin.

geirha
sumber
@ qeirha .. Saya ingin menghapus pekerjaan cron tertentu dari server saya
anumavu
@anumavu, benar, jadi Anda membacanya dengan crontab -l, seperti yang sudah Anda miliki, hapus pekerjaan dari daftar, lalu tulis kembali crontab.
geirha