2013-04-12 34 views
5

Tôi đã sử dụng đơn giản một lúc, nhưng tôi muốn báo thức nếu tệp tồn tại. Đây là trường hợp sử dụng ngược lại từ the main documentation.cảnh báo về sự tồn tại của tệp trong Monit

Đây là doc nói:

IF [DOES] NOT EXIST [[<X>] <Y> CYCLES] THEN action [ELSE IF SUCCEEDED [[<X>] <Y> CYCLES] THEN action] 
action is a choice of "ALERT", "RESTART", "START", "STOP", "EXEC" or "UNMONITOR". 

này mang lại cho tôi những công thức cho "lăn tăn nếu tập tin là mất tích". Nhưng tôi muốn "bực mình nếu tập tin đó ở đó". Và lựa chọn các hành động ngụ ý không có hành động "không làm gì cả". Tôi có thể mở ra một không-op, nhưng điều đó thực sự ngớ ngẩn cho trường hợp tiêu chuẩn "không làm gì cả".

Tôi đoán một số trường hợp cơ bản:

IF EXISTS THEN alarm 
IF EXIST THEN ALARM 

Vì vậy, là có một cách tiêu chuẩn để làm IF IT DOES EXIST?

Trả lời

6

Gần đây tôi đã tìm kiếm giải pháp tương tự như bạn và không may, tôi không thể phát hiện ra cách thực hiện điều này bằng đơn vị.

Tình huống của tôi hơi khác so với của bạn vì vậy tôi đã kết thúc báo động nếu tệp không tồn tại và thực thi tập lệnh hệ vỏ nếu nó đã xảy ra. Giống như bạn, tôi không muốn đẻ trứng một trình bao chỉ vì tập tin không tồn tại, và có "tập tin không tồn tại" xuất hiện trong/var/log/tin nhắn không phải là một việc lớn đối với tôi.

Tôi biết bạn đã nói rằng bạn có thể thoát ra không có phiên bản để bạn có thể không cần những điều sau đây nhưng tôi đang thêm nó cho những người có cùng vấn đề và không biết cách thực hiện.

check file testfile with path /path/to/file 
    if not exist then exec "/bin/bash -c 'echo dne > /dev/null'" else if succeeded then alarm 

Lưu ý rằng bạn phải exec/bin/bash viết đầu ra của tiếng vang đến/dev/null hoặc monit theo nghĩa đen sẽ echo "DNE>/dev/null"

Edit: Vì nó đã được đưa đến sự chú ý của tôi bằng cách disasteraverted, các phiên bản mới hơn của Monit sử dụng cảnh báo chứ không phải là báo động, vì vậy việc kiểm tra sẽ trông như thế này:

check file testfile with path /path/to/file 
    if not exist then exec "/bin/bash -c 'echo dne > /dev/null'" else if succeeded then alert 
+2

giống như đoạn mã đã được sao chép và quên thay đổi. nó sẽ là 'alert' ở cuối đoạn mã thứ 2 :) tôi không thể thay đổi nó vì nó nhỏ hơn 6 chara. –

+0

Cần được khắc phục ngay bây giờ – renab

2

Vui lòng kiểm tra với:

check program not_exist_file_root_test with path "/bin/ls /root/test" 

if status = 0 then alert 

hoặc

check program not_exist_file_root_test with path /bin/sh -c "test -f /root/test" 

if status = 0 then alert 

My 2 cents

2

renab, séc của bạn sẽ kết thúc với "sau đó cảnh báo" không "sau đó báo động" ít nhất là trong phiên bản của tôi (5.2.5).

testfile with path /path/to/file 
    if not exist then exec "/bin/bash -c 'echo dne > /dev/null'" else if succeeded then alert 
Các vấn đề liên quan