คำถามติดแท็ก inotify

1
เคอร์เนลถึงขีด จำกัด การเฝ้าดูถึง
ฉันกำลังประสบปัญหาในกล่อง linux ที่รูตฉันมีคำสั่งที่ส่งคืนข้อผิดพลาดเนื่องจากถึงขีด จำกัด การรับนาฬิกาจนสุดแล้ว # tail -f /var/log/messages [...] tail: cannot watch '/var/log/messages': No space left on device # inotifywatch -v /var/log/messages Establishing watches... Failed to watch /var/log/messages; upper limit on inotify watches reached! Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.` ฉัน googled เล็กน้อยและทุกวิธีที่ฉันพบคือเพิ่มขีด …
206 linux  kernel  inotify 

7
ใครเป็นผู้ใช้ทรัพยากรที่ไม่รู้ค่าของฉัน
หลังจากอัปเกรดเป็น Fedora 15 เมื่อเร็ว ๆ นี้ฉันพบว่ามีเครื่องมือจำนวนหนึ่งที่ล้มเหลวพร้อมข้อผิดพลาดตามบรรทัดของ: tail: inotify resources exhausted tail: inotify cannot be used, reverting to polling ไม่ใช่แค่tailการรายงานปัญหาเกี่ยวกับ inotify เช่นกัน มีวิธีใดที่จะซักถามเคอร์เนลเพื่อค้นหาว่ากระบวนการหรือกระบวนการใดที่ใช้ทรัพยากรที่ไม่มีการระบุ? การsysctlตั้งค่าที่ไม่เกี่ยวข้องกับ inotify ปัจจุบันมีลักษณะดังนี้: fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.inotify.max_queued_events = 16384
49 fedora  kernel  inotify 

3
วิธีใช้ inotifywait เพื่อดูไดเร็กทอรีสำหรับการสร้างไฟล์ของส่วนขยายเฉพาะ
ฉันเห็นคำตอบนี้แล้ว คุณควรพิจารณาใช้ inotifywait เป็นตัวอย่าง: inotifywait -m /path -e create -e moved_to | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'" # do something with the file done คำถามของฉันคือสคริปต์ข้างต้นดูไดเรกทอรีสำหรับการสร้างไฟล์ทุกประเภท แต่ฉันจะแก้ไขinotifywaitคำสั่งเพื่อรายงานได้เฉพาะเมื่อไฟล์ประเภท / นามสกุลที่แน่นอนถูกสร้างขึ้น (หรือย้ายไปยังไดเรกทอรี) - เช่นควร รายงานเมื่อ.xmlมีการสร้างไฟล์ใด ๆ ฉันลองอะไร: ฉันรันinotifywait --helpคำสั่งแล้วและอ่านตัวเลือกบรรทัดคำสั่ง มันมี--exclude <pattern>และ--excludei <pattern>คำสั่งในการยกเว้นไฟล์บางประเภท …

2
มีวิธีการใช้ xargs ข้ามท่อหรือไม่?
ฉันพยายามแปลงไฟล์ flac ที่ย้ายไปยังโฟลเดอร์เป็น mp3 ในโฟลเดอร์อื่นโดยอัตโนมัติ บรรทัดรหัสปัจจุบันของฉันคือ: inotifywait -m -r -q -e moved_to --format "'%w%f'" ~/test | xargs -I x flac -cd x - | lame -b 320 - /media/1tb/x.mp3 เพื่ออธิบายวิธีการใช้งานจนถึงตอนนี้ inotifywait จอภาพ ~ / ทดสอบวนซ้ำสำหรับไฟล์ที่ย้ายไปที่นั่นเอาท์พุทพา ธ และชื่อไฟล์ไปยังไพพ์ xargs ใช้ชื่อนั้นและสร้างคำสั่ง flac ที่เหมาะสมแทนที่ x ด้วยชื่อไฟล์และถอดรหัสไฟล์ไปยังไพพ์อื่น ในไปป์ใหม่ประมวลผลเอาต์พุตของ flac เป็น mp3 ภายใต้ / สื่อ …
15 shell  pipe  xargs  inotify 

1
ทำไม inotifywatch ตรวจไม่พบการเปลี่ยนแปลงของไฟล์ที่เพิ่มเข้ามา?
ฉันพยายามตรวจสอบ/tmpโฟลเดอร์เพื่อดูการเปลี่ยนแปลงโดยใช้inotifywatch: sudo inotifywatch -v -r /tmp หลังจากสร้างไฟล์สองสามไฟล์ ( touch /tmp/test-1 /tmp/test-2) ฉันจะยกเลิกinotifywatch(โดยCtrl- Cซึ่งแสดงสถิติต่อไปนี้ให้ฉันดู Establishing watches... Setting up watch(es) on /tmp OK, /tmp is now being watched. Total of 39 watches. Finished establishing watches, now collecting statistics. total attrib close_write open create filename 8 2 2 2 2 /tmp/ ผลลัพธ์พิมพ์เฉพาะสถิติ แต่ไม่ใช่ไฟล์ที่ฉันคาดไว้ …

1
inotify ทำงานอย่างไร?
ตามที่วิกิพีเดีย , inotify เป็นระบบย่อยเคอร์เนล Linux ซึ่งสังเกตเห็นการเปลี่ยนแปลงในระบบไฟล์ มันแทนที่ dnotify ก่อนหน้า โปรแกรมที่ซิงค์ไฟล์ (เช่น crashplan, dropbox, git) แนะนำในคู่มือผู้ใช้ที่ผู้ใช้เพิ่มmax_user_watches( 1 , 2 , 3 ) จากสิ่งที่ฉันเข้าใจเกี่ยวกับ inotify ระบบปฏิบัติการคือ "บอก" ว่ามีการเปลี่ยนแปลงไฟล์แทนที่จะต้องการให้ระบบปฏิบัติการ "ไปดู" สำหรับการเปลี่ยนแปลง ฉันคิดว่ามีไฟล์ "inotify" ที่สร้างในทุกไดเรกทอรี ถูกต้องหรือไม่ มีวิธีโต้ตอบกับ inotify จากบรรทัดคำสั่งหรือไม่ ทรัพยากร เหตุใดจึงไม่จำแนกเหตุการณ์ที่เกิดขึ้นบนเมาท์ NFS Inotifywait สำหรับไฟล์จำนวนมากในไดเรกทอรี
14 inotify 

1
ใช้ inotifywait พร้อมกับเสียงเรียกเข้า
ฉันมีสคริปต์ง่ายๆที่ตรวจสอบไฟล์สำหรับการเปลี่ยนแปลงและ rsyncs ด้วยสำเนาระยะไกล: #!/bin/bash while inotifywait -e close_write somefile do rsync somefile user@host.domain:./somefile done มันใช้งานได้ดีกับนาโน แต่ล้มเหลวด้วยเสียงเรียกเข้า เมื่อฉันใช้ nano มันจะออกผลลัพธ์: somefile CLOSE_WRITE,CLOSE และเริ่มวนรอบถัดไปรอรุ่นอื่น เมื่อฉันใช้เป็นกลุ่มจะไม่มีผลลัพธ์สคริปต์จะปิดด้วยรหัสออก 0 ฉันทำการวิจัยบางอย่างและพบว่า close_write เป็นพารามิเตอร์ที่ถูกต้องสำหรับ uing initofywait พร้อมกับ vim (ตอนแรกฉันต้องการใช้เหตุการณ์แก้ไข) แต่ด้วยเหตุผลบางอย่างมันล้มเหลวสำหรับฉัน
14 files  vim  rsync  inotify 

4
แจ้งการเปลี่ยนแปลงไฟล์ภายใต้ / proc
ฉันเขียน 'daemon' ขนาดเล็กใน bash ที่จะเปลี่ยนเป็นหูฟังหากตรวจพบและหากไม่ได้เปลี่ยนเป็นลำโพง USB ภายนอกด้วย PulseAudio สิ่งที่ฉันกำลังมองหาคือวิธีการรับการแจ้งเตือนการเปลี่ยนแปลงในไฟล์/proc/asound/card0/codec#0เช่นเดียวinotifywaitกับในไฟล์จริง (พิจารณาไฟล์ภายใต้ / proc เป็น "pseudo-files") ฉันพบรหัสของฉันบิตบ้าเพราะมันทำงานsleep 1กับawkทั้งวันนั่นคือ 86400 ครั้งต่อวัน :) while sleep 1; do _1=${_2:-} _2=$(awk '/Pin-ctls/{n++;if(n==4)print}' '/proc/asound/card0/codec#0') [[ ${_1:-} = $_2 ]] || if [[ $_2 =~ OUT ]]; then use_speakers else use_internal fi done สิ่งที่ฉันกำลังมองหาคือสิ่งที่ต้องการ (ตัวอย่างนี้ไม่ทำงาน): codec=/proc/asound/card0/codec#0 while inotifywait …
13 proc  inotify 

1
mutt: แสดงข้อความใหม่โดยอัตโนมัติ
เมื่อฉันเปิด mutt ฉันไม่เห็นอีเมลใหม่จนกว่าฉันจะกดแป้นตัวอย่างเช่นลูกศรชี้ลง จากนั้นอีเมลใหม่จะปรากฏขึ้น มีวิธีใดที่ mutt จะรับรู้ว่ามีอีเมลใหม่มาถึงและแสดงอีเมลโดยอัตโนมัติโดยไม่ต้องกดปุ่มทุกสองสามนาทีหรือไม่ ฉันใช้รูปแบบ maildir (อีเมลที่เก็บไว้ในเครื่อง) อะไรจะเป็นวิธีที่ดีที่สุด ควรปิดการตรวจสอบทุก ๆ n วินาทีหรือไม่หรือควรได้รับการแจ้งเตือนจากระบบปฏิบัติการบางทีใช้ inotify?
12 email  mutt  inotify 

1
ทำให้ไฟแจ้งเตือนเมื่อการเขียนเริ่มต้นหรือเมื่อเสร็จสิ้นหรือไม่?
ลองนึกภาพสองกระบวนการผู้อ่านและนักเขียนสื่อสารผ่านไฟล์ปกติบน ext3 fs Reader มี inotify IN_MODIFYwatch ในไฟล์ Writer เขียน 1,000 ไบต์ไปยังไฟล์ในการwrite()โทรครั้งเดียว Reader รับเหตุการณ์ inotify และเรียกfstatใช้ไฟล์ Reader เห็นอะไร มีการรับประกันว่า Reader จะได้รับคืนอย่างน้อย 1,000 st_sizeไฟล์หรือไม่? จากการทดลองของฉันดูเหมือนจะไม่ มีการรับประกันว่า Reader สามารถread()1,000 ไบต์จริงหรือไม่? สิ่งนี้เกิดขึ้นใน I / O bound box ที่จริงจัง ตัวอย่างเช่นsarแสดงเวลาที่รอประมาณ 1 วินาที ในกรณีของฉัน Reader กำลังรอ 10 วินาทีหลังจากได้รับการแจ้งเตือนเหตุการณ์ก่อนที่จะโทรstatและรับผลลัพธ์ที่น้อยเกินไป สิ่งที่ฉันหวังไว้คือเหตุการณ์ inotify จะไม่ถูกส่งจนกว่าไฟล์จะพร้อม สิ่งที่ฉันสงสัยว่าจริง ๆ แล้วเกิดขึ้นคือเหตุการณ์ inotify …
12 linux  files  stat  inotify 

1
ฉันจะใช้ inotify หรือตั้งชื่อ pipes ผ่าน SSHFS ได้อย่างไร
ด้วยsshfsความมหัศจรรย์ฉันสามารถติดตั้ง dir บ้านของฉันจากเซิร์ฟเวอร์ระยะไกลด้วย sshfs user@server:/home/user ~/remote ในแง่ดีฉันคิดว่าฉันตั้งค่าโลคัลinotify-hook on ~/remote/logFile(ในsshfsmount) ดังนั้นโปรแกรมโลคัลสามารถตอบสนองต่อการเปลี่ยนแปลงบันทึกระยะไกล cd ~/remote touch logFile # create remote file inotifywait logFile & # set up local inotify-hook ssh user@server -x touch /home/user/logFile # touch file from remote ไม่มีอะไรเกิดขึ้น inotifywaitจะเงียบถ้าฉันtouchไฟล์ในเครื่อง การเขียนไปป์ที่มีชื่อล้มเหลวในทำนองเดียวกัน ทำไมนี้ ฉันจะเชื่อมช่องว่างนี้ได้อย่างไร ฉันสามารถเรียกใช้inotifywaitจากระยะไกลแฮ็คอัพระบบไฟล์ให้เปลี่ยนกลยุทธ์การทำให้เป็นอนุกรมและรักษาการเชื่อมต่อกับโลคัล แต่โดยทั่วไปแล้วฉันใช้ SSHFSอีกครั้ง และมันก็ฆ่าสิ่งที่เป็นนามธรรมอย่างสมบูรณ์
12 sshfs  inotify  fifo 

4
การฆ่าเชลล์สคริปต์ทำงานในพื้นหลัง
ฉันได้เขียนเชลล์สคริปต์เพื่อตรวจสอบไดเรกทอรีโดยใช้ยูทิลิตี้ inotifywait ของ inotifyt-tools ฉันต้องการให้สคริปต์ทำงานอย่างต่อเนื่องในพื้นหลัง แต่ฉันยังต้องการที่จะหยุดมันเมื่อต้องการ เพื่อให้มันทำงานอย่างต่อเนื่องฉันใช้while true; แบบนี้: while true; do #a set of commands that use the inotifywait utility end ฉันได้บันทึกไว้ในไฟล์/binและทำให้สามารถใช้งานได้ เพื่อให้มันทำงานในพื้นหลังฉันใช้nohup <script-name> &และปิดสถานี ฉันไม่รู้ว่าฉันจะหยุดสคริปต์นี้ได้อย่างไร ฉันได้ดูคำตอบที่นี่และเป็นคำถามที่เกี่ยวข้องอย่างใกล้ชิดมากที่นี่ อัปเดต 1: บนพื้นฐานของคำตอบของ @InfectedRoot ด้านล่างฉันสามารถแก้ปัญหาของฉันโดยใช้กลยุทธ์ต่อไปนี้ ใช้ครั้งแรก ps -aux | grep script_name และใช้sudo kill -9 <pid>เพื่อฆ่ากระบวนการ จากนั้นฉันต้องpgrep inotifywaitและใช้sudo kill -9 <pid>อีกครั้งสำหรับรหัสที่ส่งคืน ใช้งานได้ แต่ฉันคิดว่านี่เป็นวิธีที่ยุ่งฉันกำลังมองหาคำตอบที่ดีกว่า …
12 bash  shell  kill  inotify 

2
ใช้ inotifywait เพื่อย้ายไฟล์เมื่อโหลดในโฟลเดอร์ดรอปบ็อกซ์
ฉันกำลังพยายามหาวิธีย้ายไฟล์ไปยังโฟลเดอร์อื่นทันทีที่ปรากฏในดรอปบ็อกซ์ของฉันบน CentOS ฉันขัดจังหวะอินเทอร์เน็ตเพื่อหาเบาะแส แต่ฉันไม่สามารถไปไกลเกินกว่าความจริงที่ว่าฉันต้องใช้inotifyเพื่อเรียกใช้สคริปต์ซึ่งจะประมวลผลไฟล์ตามที่ปรากฏ ความรู้ BASH ของฉันมี จำกัด มากและฉันสงสัยว่าฉันสามารถเขียนสิ่งนี้ใน PHP กล่าวอีกนัยหนึ่งฉันจะย้ายไฟล์ไปยังโฟลเดอร์อื่นทันทีที่ใช้งานได้inotifyอย่างไร
12 bash  centos  inotify 

1
ใช้ inotify เพื่อตรวจสอบไดเรกทอรี แต่ไม่ทำงาน 100%
ฉันได้เขียนสคริปต์ทุบตีเพื่อตรวจสอบไดเรกทอรีเฉพาะ/root/secondfolder/: #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done เมื่อผมสร้างไฟล์ชื่อfourth.txtใน/root/secondfolder/และเขียนสิ่งที่มันบันทึกและปิดมันมันจะออกผลลัพธ์ต่อไปนี้: /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt อย่างไรก็ตามมันไม่ได้สะท้อน "close_write" ทำไมถึงเป็นอย่างนั้น?

1
เหตุใดจึงแยกแยะเหตุการณ์ต่าง ๆ ในการเมาท์ NFS ได้?
บางเวลาที่ผ่านมาฉันสังเกตเห็นว่าเหตุการณ์ที่รายงานโดย inotify นั้นแตกต่างกันเมื่อไฟล์ถูกบันทึกในการเมานต์ NFS กับระบบไฟล์โลคัล VFS พื้นฐานไม่ควรให้มุมมองที่เหมือนกันของการทำงานของไฟล์หรือไม่? ต่อไปนี้เป็นร่องรอยของ VIM ที่บันทึกไฟล์ใน Debian 7.1 (Linux 3.2) บนเมานต์ NFS: wd=1 mask = 32 (IN_OPEN) wd=1 mask = 16 (IN_CLOSE_NOWRITE) wd=1 mask = 2048 (IN_MOVE_SELF) wd=1 mask = 4 (IN_ATTRIB) wd=1 mask = 1024 (IN_DELETE_SELF) wd=1 mask = 32768 ) บนระบบไฟล์โลคัล wd=1 mask = …
10 linux  nfs  inotify 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.