Tôi đã cài đặt gói python theo dõi các thay đổi tệp được gọi là khi thay đổi ( https://github.com/joh/when-changed ). Bây giờ lệnh tôi muốn chạy là:
when-changed /var/www/html/php/logfile.csv /var/www/html/php/processpayment.sh
Khi tôi sửa đổi logfile.csv, mã trong processpayment.sh sẽ được thực thi. Tuy nhiên, khi tôi đặt lệnh này trong tệp /etc/rc.local của mình và khởi động lại hệ thống, tập lệnh sẽ không thực thi khi tôi sửa đổi tệp! Tôi có 3 giả định:
- Công cụ khi thay đổi là tào lao, nó không hoạt động như một daemon.
- /etc/rc.local không phải là nơi để đặt trình nền này (Tôi đã thử đặt nó vào /etc/init/whenchanged.conf nhưng không có kết quả)
- daemon cần phải được gắn vào pts / O và không trong?
Để tham khảo, quá trình dưới cùng hoạt động:
root 1331 0.5 0.4 275480 17376 ? Sl 16:14 0:04 /usr/bin/python /usr/local/bin/when-changed /var/www/html/php/logfile.csv /var/www/html/php/processpayment.sh
root 3547 7.0 0.4 267024 16868 pts/1 Sl 16:27 0:00 /usr/bin/python /usr/local/bin/when-changed /var/www/html/php/logfile.csv /var/www/html/php/processpayment.sh
Kịch bản:
#!/bin/bash
# called when logfile.csv changes
# scrapes logfile.csv and runs the mintscript
IN=$(cat logfile.csv | tail -n1 | cut -d';' -f4,6 | xargs)
arrIN=(${IN//;/ })
amount=${arrIN[0]}
address=${arrIN[1]}
node "soupcoinmintscript.js" $address $amount | tee "log"
exit 0;
Cấu hình khởi động:
/etc/init# cat whenchanged.conf
start on startup
task
when-changed /var/www/html/php/logfile.csv
/var/www/html/php/processpayment.sh
@mtak bạn hoàn toàn đúng, tôi chỉ hơi thất vọng một chút; -). Tôi tin rằng đó là Ubuntu nhưng tôi sẽ báo cáo cụ thể hơn sớm.
—
wimdetr
init.d
ủng hộsystemd
. Ngoài ra, thật không hay khi nói đówhen-changed
là chuyện tào lao. Nhà phát triển đã thực hiện nó với một loạt các yêu cầu nhất định và anh ấy sẵn sàng chia sẻ nó với bạn (hoàn toàn miễn phí). Nếu bạn cảm thấy nó không phù hợp với nhu cầu của bạn, hãy thay đổi mã và gửi yêu cầu kéo cho anh ấy. Nếu bạn không muốn làm điều đó, hãy viết mã của riêng bạn.