Saya menciptakan 3 pekerjaan cron harian untuk dijalankan.
Di bawah ini adalah tiga yang ditempatkan di etc / cron.daily
rkhunter.sh
#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' [email protected]
chkrootkit.sh
#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]
logwatch.sh
#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]
Saya mengganti [email protected] ofcourse dengan email saya.
Jika saya menjalankan cronjob ini secara manual itu berfungsi dengan baik ./nameoffile.sh
Tapi itu tidak berjalan setiap hari, apa penyebabnya atau bagaimana saya bisa memeriksanya?
command-line
email
cron
rkhunter
sonicboom
sumber
sumber
Jawaban:
Ada dua kemungkinan tersangka yang biasanya menyebabkan
cron
pekerjaan tidak dapat berjalan.Yang pertama adalah masalah izin, yaitu pengguna dapat menjalankan skrip / perintah tetapi daemon cron tidak bisa karena pekerjaannya ada di pekerjaan cron pengguna yang salah. Sebagai contoh, pengguna membuat skrip atau menjalankan perintah dengan hak istimewa yaitu menggunakan
sudo
, lalu menambahkan skrip / perintah yang diuji ke daftar tugas cronnya (crontab
). Hasilnya adalah pekerjaan cron pengguna tidak akan dapat berjalan karena membutuhkan hak istimewa yang ditingkatkan.crontab -e
sudo crontab -e
Alasan kedua adalah path, untuk memastikan skrip akan dieksekusi, pengguna harus menambahkan path lengkap ke skrip yang akan dieksekusi di crontab. Solusi lain adalah dengan memperluas variabel PATH pengguna root dengan meletakkan baris berikut di bagian atas file crontab mereka:
sebagai wiki komunitas menyebutkan .
Anda mungkin ingin membaca wiki komunitas tentang cron karena memberikan perincian lebih lanjut tentang hal di atas.
sumber
Menurut respons ini , masalahnya terletak pada ekstensi .sh. Hapus itu (jadi misalnya ganti nama file Anda dari rkhunter.sh ke rkhunter.
Untuk mengkonfirmasi, jalankan perintah berikut
run-parts --test /etc/cron.daily
Jika skrip Anda (rkhunter) termasuk dalam hasil, semuanya baik. Untuk informasi lebih lanjut tentang perintah run-parts, baca halaman manual di dalamnya
man run-parts
sumber
man run-parts
"nama-nama harus seluruhnya terdiri dari huruf besar dan kecil ASCII, angka ASCII, garis bawah ASCII, dan ASCII minus-tanda hubung"Dalam sistem saya itu karena anacron tidak diinstal.
Jadi instal anacron atau hapus test -x / usr / sbin / anacron
sumber
dpkg --get-selections | grep cron
.. <swears>anacron
tidak perlu; yang||
operator dalam crontab perintah mengeksekusirun-parts
ketika anacron TIDAK diinstal. Ketikaanacron
diinstal, itu membuatrun-parts
perintah harian / mingguan / bulanan itu berlebihan.Saya pikir file dengan ekstensi diabaikan.
Lari:
Jika Anda tidak melihat skrip Anda tercantum, hapus ekstensi .sh dan coba lagi.
sumber
Menambahkan ke Stef jawaban, Anda juga harus memastikan bahwa mereka memiliki bit yang dapat dieksekusi:
Anda harus dapat menjalankannya menggunakan
chmod +x filename
.sumber
Ganti nama file Anda untuk tidak memiliki ekstensi .sh
Untuk memverifikasi ini masalahnya, coba
Anda akan melihat itu tidak terdaftar. Jadi jalankan:
dan coba daftar lagi. Itu harus terdaftar.
sumber
Saya tidak bisa menjalankannya dengan anacron, saya menghapus anacron dari
/etc/crontab
dan dieksekusiapt remove --purge anacron
dan langsung berfungsi.Saya tidak mengerti mengapa kita perlu dua penjadwal.
sumber
Situasi yang sama hari ini di sini
aku melakukannya
dan ditemukan
Saya menemukan bahwa seseorang (saya !!!!) menambahkan baris yang dimulai dengan
dan jelas jam ke-38 tidak ada!
sumber