Saya memiliki beberapa perintah di saya .profile
yang ingin saya panggil dari saya crontab
.
Misalnya, jika saya punya,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Saya hanya ingin memanggil alias
0 11 * * * notify-team
jadi jika daftar di saya .profile
diperbarui, saya tidak perlu memperbarui crontab
juga. Namun, saya sepertinya tidak bisa menggunakan alias di blog saya crontab
. Apakah ada pekerjaan?
Saya mencoba saran di sini untuk mengatur lingkungan (mis. / Bin / bash -lc dan script-wrapper script). Sepertinya itu berfungsi untuk skrip tetapi tidak untuk alias.
Ada ide?
Jawaban:
Dari manual tentang alias:
Jadi coba gunakan
shopt -s expand_aliases
di awal skrip sumber Anda. Ini seharusnya membiarkan Anda menggunakan saran Warner.sumber
shopt expand_aliases
. Saya bertaruh tidak aktif. Itu ada di kotak RHEL 5.3 saya.eval 'foo'
di crontab berhasil.bash -c dengan "source" seharusnya berfungsi:
ini juga bisa bekerja. periode berarti "sumber"
sumber
Seperti yang diidentifikasi Chris, opsi shell default untuk shell non-interaktif adalah tidak memperluas alias. Inilah solusi yang saya temukan berhasil.
Tulis skrip, aktifkan opsi shell, dan sumber alias Anda. Berhati-hatilah karena
.bashrc
bersumber dari eksekusi, itulah sebabnya harus bersumber lagi setelah mengaktifkan expand_aliases.Permintaan maaf saya untuk rekomendasi yang awalnya salah. Ini lebih tidak jelas dari yang saya perkirakan.
Naskah:
sumber
Saya suka ide artifex untuk mengambil alias dari file dan kemudian menggunakannya kembali, karena saya tidak bisa menemukan cara untuk memperluas / menggunakan kembali alias secara langsung. (Solusi lain masih membutuhkan skrip lain.)
Jadi saya menulis fungsi ini dan meletakkannya di .profile saya:
Kemudian saya bisa menggunakannya di crontab saya untuk berbagai alias seperti ini:
dll.
Yay, penggunaan kembali kode! Terima kasih semuanya.
sumber
Sungguh hal paling sederhana yang bisa Anda lakukan adalah menciptakan
~ / bin / beri tahu-saya dengan
~ / bin / beri tahu-tim dengan
alias shell rumit untuk dipertahankan dan diintegrasikan ke sistem lain, seperti yang Anda lihat. hal terbaik untuk dilakukan adalah mengubahnya menjadi perintah lengkap yang tidak akan memiliki masalah lingkungan yang lucu.
sumber
bash -ic "notify-team" adalah opsi terbaik. Itu membuat alias tersedia di crontab. Anda selanjutnya dapat menambahkan & untuk latar belakang karena kami menggunakan shell 'interaktif' dengan -i, tetapi pada kenyataannya tidak berinteraksi dengannya.
sumber
bekerja untukku
sumber