Haruskah saya menyimpan file crontab saya di / tmp?

11

Saya ssh ke server, dan ingin menambahkan beberapa pekerjaan harian (khusus untuk memperbaharui tiket Kerberos bahkan ketika saya logout dan saya masih ingin program saya di layar atau tmux terus berjalan) ke cron. Jadi saya jalankan crontab -e, dan tambahkan yang berikut,

00 00 * * * kinit -R
00 12 * * * kinit -R

Ketika saya menyimpannya, saya ditanya oleh editor:

File Name to Write: /tmp/crontab.HMpG7V 

Bukankah file-file itu /tmpdapat dihapus oleh OS? Apalagi setelah saya logout dari server?

Di mana saya harus menyimpan file crontab saya? Bisakah saya menyimpan file crontab di bawah $ HOME atau ruang yang lebih baik?

Tim
sumber
Bisakah saya menyimpan file crontab di bawah $ HOME? Mengapa saya perlu symlink?
Tim

Jawaban:

15

crontab -emembuka sebuah file di / tmp alih-alih crontab yang sebenarnya sehingga ia dapat memeriksa kesalahan-kesalahan pada crontab baru Anda dan mencegah Anda menimpa crontab Anda yang sebenarnya dengan kesalahan-kesalahan itu. Jika tidak ada kesalahan, maka crontab Anda yang sebenarnya akan diperbarui. Jika crontab -ehanya menulis langsung ke crontab Anda yang sebenarnya, maka Anda akan mengambil risiko semua cronjobs Anda gagal dijalankan karena kesalahan sintaks di crontab baru Anda.

sudoedit, visudo, vipw, Dll beroperasi pada prinsip yang sama.

Jangan khawatir, crontab Anda yang sebenarnya tinggal di lokasi yang tidak mudah menguap di disk.

jayhendren
sumber
di mana file crontab saya akhirnya disimpan? Jika saya keluar dari server, apa yang akan terjadi pada file crontab saya? (Saya bukan admin, dan tidak memiliki akses root ke server)
Tim
1
crontab Anda yang sebenarnya tinggal di suatu tempat di /var/spool(biasanya), tetapi Anda seharusnya tidak pernah menyentuh crontab Anda yang sebenarnya dan Anda seharusnya tidak perlu, baik - gunakan crontab -esaja. Anda mungkin tidak memiliki tingkat akses yang tepat untuk mengedit file crontab mentah.
jayhendren
jika Anda keluar, tidak akan terjadi apa pun pada crontab Anda. itu tidak hidup di / tmp.
jayhendren
(1) Apakah file crontab untuk pengguna individu atau untuk semua pengguna? (2) Bagaimana saya bisa memverifikasi apakah edit saya ke file crontab berfungsi?
Tim
crontab adalah per pengguna. untuk memverifikasi bahwa cronjob Anda berjalan, Anda dapat memeriksa log cron. biasanya di /var/log/cron.log, tetapi bisa juga lokasi lain.
jayhendren
5

/tmpadalah tempat file crontab sementara ditulis. Setelah Anda menyimpan dan keluar, crontabakan melakukan perubahan ke direktori berbeda, lebih tepat pada sistem Anda (biasanya di /var/spool/cron, jika saya ingat benar). Jadi, jangan khawatir, sistem operasi mungkin menghapus / tmp Anda, tetapi itu tidak akan pernah menghilangkan crontab Anda.

Valmiky Arquissandas
sumber
1

File Crontab berada di / var / spool / cron / crontab / di bawah nama pengguna atau ID pengguna. Karena situasi dapat muncul di mana crontab yang berada di sini tidak lagi terhubung ke akun login Anda, Anda disarankan untuk menyimpan salinan ke direktori home Anda, katakan /home/userid/.crontab, sehingga Anda dapat dengan mudah mengembalikannya jika perlu. untuk. Ini juga memungkinkan Anda untuk meletakkannya di bawah kontrol revisi jika Anda suka.

Jika direktori home Anda dipindahkan ke sistem lain, seringkali crontab dari direktori spool tidak menyertainya kecuali admin sistem Anda mempertimbangkannya. / Var / spool juga tidak selalu dicadangkan atau dipulihkan saat sistem perlu diulang.

Jadi sekali lagi disarankan agar salinan crontab Anda disimpan di bawah direktori home Anda.

Gunakan editor favorit Anda (pico, vi, emacs, dll) untuk mengedit ~ / .crontab dan kemudian gunakan crontab untuk menerapkannya ke / var / spool / crontab. Seperti ini:

% pico ~/.crontab; crontab ~/.crontab

Jika Anda suka alias, Anda bisa membuatnya untuk dijalankan.

JonathanS
sumber
1
Apakah saya harus melakukan sesuatu untuk membuat file crontab rumah saya menimpa file crontab di lokasi lain?
Tim
Jalankan saja "crontab ~ / .crontab" dan Anda akan menerapkannya pada file yang ada di / var / spool / cron / crontab. Gunakan pico, emacs, atau vi untuk mengedit ~ / .crontab sebelumnya untuk melakukan perubahan.
JonathanS
Ini sebenarnya tidak menjawab pertanyaan.
tidak ada orang
@AndrewMedico: Pertanyaan utama sepertinya adalah "Di mana saya harus menyimpan file crontab saya? Dapatkah saya menyimpan file crontab di bawah $ HOME atau ruang yang lebih baik?" Atau apakah Anda merujuk pada pertanyaan Tim di komentar di sini?
JonathanS