Jak wykonać polecenie co 10 sekund (bez crona)?

36

Kiedy wykonuję cron, dostaję ten błąd

cron: nie można otworzyć ani utworzyć /var/run/crond.pid: Odmowa dostępu

Jak to zrobić bez cron?

PS Chcę sprawdzić, czy plik w svn się zmienił i mam do tego specjalny skrypt.

UAdapter
źródło
Jeśli nie masz uprawnień, spróbuj uruchomić cron z sudo.
Anonimowy
4
Pamiętaj, że cron nie zrobi czegoś co 10 sekund, najbardziej ziarnisty, jaki dostaje, to raz na minutę.
Cesium
Jeśli chcesz zrobić cronjobs, musisz uruchomić, crontab -eaby uruchomić edytor. Aby wyświetlić listę obecnych cronów, uruchomcrontab -l
Lekensteyn,
@Anonimowy, nie znam hasła roota, więc sudo mi nie pomoże.
UAdapter
unix.stackexchange.com/questions/10646/…
Ciro Santilli 18 改造 中心 法轮功 六四 事件

Odpowiedzi:

59

Aby uzyskać dostęp do osobistej cronkonfiguracji, należy użyć polecenia crontab -e(w celu edycji tabeli cron).

Alternatywą jest watchpolecenie:

watch -n10 command args

Wreszcie, aby bardziej skutecznie monitorować zdarzenia systemu plików, można użyć inotifywaitz inotify-toolsopakowania.

enzotib
źródło
1
Warto zauważyć, że być może lepiej byś zawarł swoje polecenia w podwójnych cudzysłowach, bo w przeciwnym razie może dojść do nieoczekiwanych rezultatów. watch -n<timeout> "command(s) arg(s)"jakwatch -n2 "ps ux | grep ss5"
Achilles
Trudno mi watchbyło zaakceptować długie, skomplikowane polecenia za pomocą potoków i cudzysłowów. Pętla while poniżej działała, ale oczywiście należy zawsze spać jako pierwszy, aby uniknąć niekontrolowanych pid.
rjurney
@ rjurney: powinno wystarczyć zawinięcie całego polecenia w cudzysłowy, pojedyncze lub lepiej podwójne:watch -n10 "ls -l | grep $foo"
enzotib
@enzotib Problem pojawia się, gdy w poleceniach są cytaty, ponieważ cytaty w cudzysłowach (Boże, pomóż mi), cytaty zbliżają się do niemożliwych w bash. Teoretycznie powinno to być możliwe, ale rzadko osiągam zagnieżdżone cytaty w bashu, nie rezygnując i wybierając inną drogę.
rjurney
32

Możesz napisać skrypt powłoki, który ma sleeppętlę while.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done
Anonimowy
źródło
5
while truenie wymaga kwadratowych hamulców, w przeciwnym razie „prawda” jest interpretowana jako ciąg, a każdy ciąg jest tak dobry jak „prawda”.
enzotib
1
@enzotib, więc równie dobrze możesz pisać w pobliżu
Eduard Florinescu
Chociaż to działa, zawsze powinieneś spać pierwszy, ponieważ coś może się zdarzyć, powodując, że krok nie zostanie osiągnięty, w którym to przypadku masz ucieczkę pid zalewającą coś.
rjurney
4

gnome-schedule (kliknij przycisk, abyInstall now!użyć Centrum oprogramowania)
to graficzny interfejs użytkownika, który wykorzystuje moc vixie-cron, dcron i at do zarządzania plikiem crontab i zapewnia łatwy sposób planowania zadań na komputerze. Obsługuje powtarzające się (okresowe) zadania i zadania, które mają miejsce tylko raz w przyszłości. Jest napisany w Pythonie przy użyciu pygtk.

Niesamowite funkcje

  • Obsługuje niestandardowe tytuły i ikony dla twoich zadań, dzięki czemu łatwiej je śledzić
  • Obsługa szablonów, dzięki czemu nie będziesz musiał ciągle tworzyć tego samego zadania; są one zapisywane w gconf i mogą łatwo dostarczać je z, powiedzmy, dystrybucją Linuksa
  • Jeśli jest uruchamiany jako root, możesz edytować crontab dowolnego użytkownika i zadania „at”.
  • Ciągi czytelne dla człowieka, takie jak „Co godzinę” zamiast „0 * * * *”
  • Tryb zaawansowany dla ekspertów crontab
  • Udostępnia „aplet panelu”, w którym można zarządzać zadaniami z menu rozwijanego
  • Predefiniowane wspólne wyrażenia, takie jak: co minutę, co tydzień, jutro, w przyszłym tygodniu Kalendarz pozwala wybrać dzień, w którym zadanie ma zostać wykonane
hhlp
źródło