Lokasi file crontab

53

sebanyak (kebanyakan?) lainnya, saya mengedit crontab saya crontab -e, di mana saya menyimpan semua operasi rutin seperti cadangan tambahan, ntpdate, berbagai operasi rsync, serta membuat latar belakang desktop saya bertema natal setahun sekali. Dari apa yang saya mengerti, pada instalasi baru atau pengguna baru, ini juga secara otomatis membuat file jika tidak ada. Namun, saya ingin menyalin file ini ke pengguna lain, jadi di mana file aktual yang saya edit?

Jika ini bervariasi antara distro, saya menggunakan Centos5 dan Mint 17

Jarmund
sumber
15
+1 hanya untuk membuat latar belakang desktop Natal Anda bertema setahun sekali
Celada
5
@Celada Ini mungkin tidak sering, tapi tetap saja ini tugas rutin.
Jarmund

Jawaban:

54

Lokasi cronfile untuk pengguna individu adalah /var/spool/cron/crontabs/.
Dari man crontab:

Setiap pengguna dapat memiliki crontab mereka sendiri, dan meskipun ini adalah file /var/spool/cron/crontabs, mereka tidak dimaksudkan untuk diedit secara langsung.

heemayl
sumber
7
Kata kuncinya ada "mereka tidak dimaksudkan untuk diedit secara langsung", jadi jawaban ini tidak lengkap tanpa perintah Celada di bawah ini, yang memberikan jawaban yang lebih aman untuk bagian "salin ke pengguna lain" dari pertanyaan. Jika orang terbiasa mengedit crontab secara langsung tanpa mengirimkannya melalui perintah crontab, mereka melepaskan banyak kewarasan-memeriksa perintah yang disediakan.
Monty Harder
@MontyHarder Saya setuju "mereka tidak dimaksudkan untuk diedit secara langsung" tetapi bagaimana jika ada kebutuhan, seperti ada kebutuhan untuk membuat entri di crontab melalui skrip bash. Anda harus menggunakan file yang tepat, saya tidak berpikir antarmuka eksternal akan membantu dalam hal ini, koreksi saya jika saya salah.
Prabhat Kumar Singh
@ PrabhatKumarSingh Anda masih tidak boleh langsung mengedit file. Jika Anda membaca perintah Celada di bawah ini, Anda akan melihat contoh bagaimana skrip dapat memanipulasi file crontab tanpa secara langsung mengeditnya. man crontabmenjelaskan cara kerjanya.
Monty Harder
34

heemayl benar tentang lokasi file crontab di Linux, tetapi mungkin berbeda pada sistem operasi lain dan "secara teoritis" juga bisa berada di lokasi yang berbeda di Linux. Pada dasarnya, ketika antarmuka khusus disediakan untuk mengakses file, Anda harus menggunakannya. Ini akan memastikan bahwa Anda cronharus memeriksa file sebelum menginstalnya, memastikan file memiliki izin yang diperlukannya, dll ...

Karena itu, Anda harus menyalin crontab dari satu pengguna ke pengguna lain menggunakan antarmuka itu, seperti ini, bukan dengan mengakses file secara langsung.

crontab -u <user1> -l | crontab -u <user2>
Celada
sumber
3
Ada banyak alasan bagus mengapa file crontab tidak boleh langsung dimanipulasi oleh apa pun selain OS itu sendiri. Ini adalah solusi yang jauh lebih baik. Saya benar-benar berpikir itu perlu dimasukkan ke dalam jawaban resmi.
Monty Harder
@MontyHarder Sebenarnya tidak ada jawaban "resmi". Ada jawaban yang diminta orang yang dipilih secara pribadi bermanfaat baginya (satu dengan tanda centang) dan jawaban yang dipilih komunitas (dengan jumlah terbanyak). Singkatnya, Anda memiliki 15 rep, Anda dapat menyarankan ini adalah jawaban yang tepat dengan memutakhirkannya. Juga, jika Anda ingin menyarankan perbaikan pada jawaban yang lain, Anda perlu mengomentari jawaban itu — jika tidak, pembuatnya tidak akan diberitahu tentang komentar Anda.
derobert
2
Akibat wajar dari jawaban ini adalah bahwa seseorang harus mengarahkan output crontab -lke file, memindahkan file ke sistem lain, dan mengirimkannya ke pipa crontab. Atau mungkin bahkan melakukannya secara langsung ( crontab -l | ssh $remote_host crontab).
Blacklight Shining
6
"Ketika antarmuka khusus disediakan untuk mengakses file, Anda harus menggunakannya." Bayangkan setiap aplikasi menyediakan antarmuka khusus untuk mengedit file konfigurasi daripada hanya mengeksposnya melalui fs, meskipun. Itu akan menjadi gangguan yang harus dilacak.
Witiko
1
Sebagai penanya yang asli, saya pikir saya harus mempertimbangkan ini: Jawaban yang diterima dipilih berdasarkan pertanyaan saya dalam arti harfiahnya; lokasi file. Niat saya untuk file itu tidak relevan. Saya tidak berpikir mengedit di info tambahan mengubah jawabannya, tetapi mungkin dianggap berlebihan.
Jarmund