Beberapa tahun yang lalu saya menyiapkan tugas cron untuk secara otomatis ping URL setiap menit sebagai bagian dari sistem pemantauan (itu penyederhanaan yang berlebihan, tetapi akan dilakukan untuk pertanyaan ini). Karena saya orang yang mengerikan, saya tidak mendokumentasikan ini di mana pun.
Hari ini, bertahun-tahun kemudian, saya mulai mengalami masalah dengan aplikasi di ujung lain dari URL yang sedang di-ping. Saya memperbaikinya, tetapi kemudian menyadari, saya tidak tahu dari mana pekerjaan cron ini berasal .
Apakah ada cara untuk dengan cepat mencari atau menemukan semua crontab pada sistem tertentu? Saya memiliki akses root sehingga izin tidak menjadi masalah. Saya hanya pernah menjadi pengguna cron
, saya tidak pernah melihat terlalu dalam pada implementasinya, tetapi naluri * nix saya mengatakan harus ada sekelompok file teks di suatu tempat yang menampung semua crontab. Aku hanya tidak tahu di mana mereka berada, dan jika aku menggali ke dalamnya aku akan takut menemukan beberapa, tetapi tidak semuanya, atau kehilangan beberapa nuansa aneh dari sistem
Juga, saya sadari dengan akses root yang saya bisa
- Dapatkan daftar semua pengguna dalam sistem
su
sebagai penggunacrontab -l
- Ulangi dengan semua pengguna
tapi saya sedang mencari sesuatu yang sedikit kurang manual (dan ingin belajar sesuatu tentang implementasi cron)
Jawaban:
Hanya ada beberapa tempat yang bisa disembunyikan crontab:
/etc/crontab
/etc/cron.d/*
/etc/crond.{hourly,daily,weekly,monthly}/*
ini dipanggil dari
/etc/crontab
, jadi mungkin tanda bintang pada ini/var/spool/cron/*
(terkadang/var/spool/cron/crontabs/*
)Pastikan juga untuk memeriksa
at
, yang mempertahankan pekerjaannya di/var/spool/at/
atau/var/spool/cron/at*/
Juga, bukannya
Lakukan saja ini:
sumber
Crontab hidup
/etc/crontab
dan (dengan banyak implementasi) komponennya di/etc/cron.*/*
(semua diedit oleh root), dan di/var/spool/cron/*
(crontab pengguna).Jika Anda kesulitan menemukan pekerjaan yang menyinggung, pendekatan lain adalah menyelidiki satu saat sedang terjadi. Misalnya, Anda bisa menambahkan aturan firewall untuk mencatat ID pengguna dari proses membuka koneksi
example.com
di port 80:Jika pekerjaan menggunakan aplikasi seperti
ping
ataucurl
, bayangan biner biasa dengan pembungkus yang mencatat informasi tentang apa yang menggunakannya, dengan skrip seperti ini di/usr/local/bin
:sumber
Cara cepat dan kotor:
Lokasi persis di mana crontab disimpan dapat bervariasi dari satu sistem ke sistem lainnya, tetapi biasanya di dalam
/var/spool
dan memilikicrontab
suatu tempat di namanya.Perhatikan juga bahwa banyak sistem memiliki crontab sistem (seperti dalam
/etc/crontab
,/etc/cron.d
) beberapa di antaranya dapat memanggil lebih banyak skrip seperti/etc/cron.hourly
,.daily
...sumber
Itu terdengar seperti cronjob yang dibuat oleh crontab. Tidak semua crontab memiliki
-u
switch, tetapi untuk GNU / Linux tersedia. Ini adalah baris yang berguna untuk mendaftar semua cronjobs yang dibuat oleh crontab.(Jalankan sebagai root.)
sumber
Jika semuanya gagal, Anda dapat membuat honeypot dari URL yang diminta - yaitu melayani file besar atau sesuatu - dan mencari proses yang menunggu untuk menerima data, dan kemudian mencari PPID-nya.
sumber
Setiap sistem yang layak harus menjelaskan lokasi tepat dari crontab di halaman manual (biasanya di
FILES
bagian dekat bagian akhir, dan juga untuk demon lainnya).Di sistem saya misalnya,
cron(8)
berisi yang berikut:Dan saya menyarankan saran kedua tylerl untuk juga memeriksa
at
pekerjaan saat Anda melakukannya.sumber
Mendekati sebaliknya: cron membuat catatan tentang apa yang dilakukannya, tepatnya untuk menghindari masalah seperti ini sejak awal. Di sistem saya, log disimpan
/var/cron/log
dan terlihat seperti ini:Baris ini memberi tahu saya bahwa instance cron dengan PID 20232 di mesin
fortress
sedang mengeksekusi/home/vucar/lighttpd-watchdog
atas nama penggunavucar
. Sistem yang berperilaku baik hanya memiliki cron tunggal yang berjalan, jadi ini akan mudah.Ini juga berfungsi untuk
at
pekerjaan, karena biasanya mereka hanya diserahkan kepada cron:Cuplikan berasal dari sistem BSD, tetapi konsep umum sangat mungkin sama di tempat lain.
sumber