2012-05-04 2 views
1

У меня есть небольшой скрипт, который постоянно проверяет определенное состояние и как только это условие будет выполнено, программа должна выполнить. Это можно сделать. Я думал об использовании crontab, где скрипт запускается каждые 5 минут, но теперь я хочу, чтобы это было сделано без crontab.Как запустить скрипт в фоновом режиме без использования crontab

+0

См. Этот принятый ответ http://stackoverflow.com/questions/525247/how-do-i-daemonize-an-arbitrary-script-in-unix – tommasop

+0

возможных дубликатов [как я могу постоянно запускать сценарий unix в фоновом режиме без использования crontab.] (Http://stackoverflow.com/questions/10445201/how-can-i-continously-run-a-unix-script-in -background-without-using-crontab) – WrightsCS

ответ

1

Возможно, вам нужно сначала создать бесконечный цикл, а затем в этом цикле вы, вероятно, захотите проверить свое состояние или немного подождать , Поскольку вы не указали, какой язык сценариев вы хотели использовать, я собираюсь написать псевдо-код для примера. Дайте нам больше информации о языке сценариев и, возможно, также об условиях.

Пример в псевдокоде:

# Defining a timeout of 1 sec, so checking the condition every second 
timeout = 1 

# Running in background infinitely 
while true do 
    # Let's check the condition 
    if condition then 
    # I got work to do 
    ... 
    else 
    # Let's wait a specified timeout, not to block the system 
    sleep timeout 
    endif 
endwhile 

Пример в ш с вашим входным кодом

#!/bin/sh 
PATH=/bin:/usr/bin:/sbin:/usr/sbin 

# Defining a timeout of 1 hour 
timeout=3600 

while true 
do 
    case 'df /tmp' in 
    " "[5-9]?%" ") rm -f /tmp/af.* 
     ;; 
    *) 
     sleep $timeout 
     ;; 
    esac 
done 

Вы можете запустить этот сценарий из оболочки с помощью 'поЬир':

nohup yourscript & 
+0

На самом деле я разработал один скрипт в unix, который проверяет пространство в каталоге и, если он превышает определенный предел, удаляет файл этого диска. Теперь я хочу, чтобы этот скрипт запускался непрерывно или каждые 1 ч. Можете ли вы мне помочь, поскольку я не могу использовать crontab. – Atul

+0

Используете ли вы скрипт bash? скрипт ksh? perl-скрипт? скрипт python? и т. д. Что значит «бегать за ним»? Вы хотите, чтобы он был демоном? Для запуска при запуске? Продолжить работу после закрытия оболочки? – Huygens

+0

вот сценарий #!/Bin/sh PATH =/bin:/usr/bin:/sbin:/usr/sbin case 'df/tmp' в * "" [5-9]?% "" *) rm -f /tmp/af.* ;; esac ... Это нужно запускать каждый раз 1 час – Atul

Смежные вопросы