Saya tahu telah sedikit diskusi tentang topik yang mirip dengan ini. Tetapi inilah yang pada dasarnya saya coba lakukan.
Saya memiliki direktori tontonan yang dipanggil watched
dan setiap kali file ditambahkan ke direktori itu, saya ingin memicu skrip yang disebut syncbh.sh
yang akan mengambil file dari direktori itu dan mengunggahnya ke server jauh.
Peringatannya adalah bahwa file dibuat dalam watched
direktori oleh satu pengguna (user2), tetapi skrip dieksekusi oleh yang lain (user1).
Saya sudah mencoba menggunakan incron untuk menyelesaikan ini, tetapi tetap mengalami masalah besar karena sementara skrip dapat dieksekusi secara manual oleh user1 dengan hak akses root, daemon incron tidak pernah benar-benar dipicu secara otomatis oleh peristiwa pembuatan file oleh pengguna lain2.
Saya sudah memikirkan apakah inoticoming akan menjadi alternatif yang lebih baik, tetapi saya tidak jelas tentang bagaimana sintaksis ini bekerja. Jika ada cara yang lebih baik untuk mencapai ini, atau jika saya akhirnya menggunakan inoticoming apa yang akan menjadi sintaks perintah untuk memintanya menonton /home/user1/watched
direktori dan menjalankan skrip /usr/local/bin/syncbh.sh
jika file dibuat / dimodifikasi dalam direktori itu?
Bantuan apa pun akan sangat dihargai.
sumber
inoticoming
?Jawaban:
Menggunakan
inoticoming
:Anda dapat memasukkan skrip
/etc/init.d/
yang berjalaninoticoming
saat boot.Buat folder baru untuk menyimpan
inoticoming
log / terakhirpid
untukwatched
folder:sudo mkdir -p /var/log/inoticoming/watched/
Buat skrip
inoticoming_watched
di/etc/init.d/
:* Ingatlah untuk mengubah <path_to_folder> dan <path_to_script> untuk mencocokkan path lengkap
watched
folder dan path lengkap script untuk dieksekusiTandai skrip sebagai executable:
sudo chmod u+x /etc/init.d/inoticoming_watched
Pastikan skrip yang dipanggil oleh
inoticoming_watched
dapat dieksekusi.Pembaruan
rc.d
untuk membuat layananinoticoming_watched
mulai saat boot:sudo update-rc.d inoticoming_watched defaults
Anda dapat memeriksa
inoticoming
login/var/log/inoticoming/watched
.sumber
Pertama-tama, instal inoticoming :
Kemudian gunakan perintah ini:
Perhatikan proses inoticoming yang sedang berlangsung, karena mereka dapat dimulai beberapa kali.
Proses berjalan di backgound dan menonton
/home/user1/watched
Ketika file ditambahkan atau diubah dalam direktori itu, skrip
/usr/local/bin/syncbh.sh
dipanggil.Parameter untuk skrip ini dalam hal ini
/home/user1/watched/<name_of_changed_or_modified_file>
{}
diganti dengan nama filesumber
Pertama-tama, skrip untuk menonton
watched
direktori:Kedua Untuk melakukan sinkronisasi sebagai pengguna lain (user2):
Sekarang untuk tidak membuat pengguna prompt, Anda dapat mengatur Anda
sudo
sandi dalam file dan membaca password dari file ini bila diperlukan (catatan Anda harus menggunakan-S
dengansudo
untuk mendapatkan password dari file).Masukkan
sudo
kata sandi Anda dalam file, misalkanpasswd.txt
, maka perintah di atas akan payah sepertiSekarang keseluruhan skrip akan seperti:
sumber