Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Proszę o pomoc mam skrypt Shell i chce go uruchomić w gronie co pół minuty.
Szukałem w internetach ale rozwiązanie z pętla się nie sprawdza gdyż proces ewidentnie odpala się wtedy za dużo razy
Ktoś posiada jakies sprawdzone sposoby ?
Pozdrawiam i dziękuję za opdowiedzi
Offline
Można uruchomiać co minute dwa zadania w którym jedno będzie sztucznie wytracało czas tak żeby w efekcie ostateczny skrypt uruchamiał się co pół minuty:
* * * * * root ~/script.sh * * * * * root sleep 30 && ~/script.sh
Offline
Ja do takich "wiertarek udarowych" wolę daemontools zamiast crona.
Np:
[b]cat /service/vnstat/run[/b]
#!/bin/sh exec 2>&1 exec /usr/bin/setuidgid vnstat /usr/local/sbin/updatevnstat
[b]cat /usr/local/sbin/updatevnstat[/b]
#!/bin/bash while true; do for karta in $(ip route show | grep default | cut -d' ' -f5) ; do vnstat -u -i $karta; done; sleep 30 done;
Czy działa?
# G1 ### nie sie 19 09:57:22 domek : ~ root ~> svstat /service/vnstat/ /service/vnstat/: up (pid 6902) 230964 seconds
Pozdro
Ostatnio edytowany przez Jacekalex (2018-08-19 12:43:18)
Offline
Nie potrzeba tyle rzeźbić.
https://www.freedesktop.org/software/systemd/man/systemd.timer.html
Offline
[quote=yossarian]Nie potrzeba tyle rzeźbić.
https://www.freedesktop.org/software/systemd/man/systemd.timer.html[/quote]
Nie zawsze nie trzeba, Systemd jest tak ogromnym i ważnym projektem, że miewa czasami różne humory, jak każdy projekt, który miewa setki tysięcy albo nawet miliony linii kodu.
Czasem lepiej polegać na rozwiązaniach bliższych regule [url=https://pl.wikipedia.org/wiki/KISS_(regu%C5%82a)]KISS[/url].
Czasem też lepiej jest polegać na 20 liniach własnego kodu, aniżeli na 20 000 linii kodu jakiegoś cudownego programu, ktory coś ma zrobić za nas "automatycznie" i "automagicznie".
Ostatnio edytowany przez Jacekalex (2018-08-19 15:18:09)
Offline
@Jacekalex: Te Twoje prowizoryczne skrypty i narzędzie porzucone prawie 20 lat temu są bardzo KISS :D
Offline
[quote=yossarian]@Jacekalex: Te Twoje prowizoryczne skrypty i narzędzie porzucone prawie 20 lat temu są bardzo KISS :D[/quote]
I cóż z tego?
Działają zawsze, działają niezawodnie, są najbardziej odporne na aktualizacje systemu.
Do tego można z takimi skrytami fruwać między różnymi systemami Linuxa i BSD,
co przy systemd nie jest aż takie oczywiste.
I to jest podstawowe kryterium oceny dla mnie.
Z resztą spróbuj zgadnąć, na jakim to jest systemie:
root ~> svstat /etc/service/* /etc/service/cgroup: up (pid 1469) 269446 seconds /etc/service/dovecot: up (pid 1474) 269446 seconds /etc/service/dropbear: up (pid 1471) 269446 seconds /etc/service/mysql: up (pid 1477) 269446 seconds /etc/service/nginx: up (pid 28787) 36806 seconds /etc/service/opendkim: up (pid 1473) 269446 seconds /etc/service/php71: up (pid 1472) 269446 seconds /etc/service/phpmageadmin: up (pid 1468) 269446 seconds /etc/service/phpmagento: up (pid 1476) 269446 seconds /etc/service/postfix: up (pid 1792) 269444 seconds /etc/service/prosody: up (pid 1478) 269446 seconds /etc/service/redis: up (pid 1480) 269446 seconds /etc/service/sshd: up (pid 1475) 269446 seconds
root ~> systemctl status daemontools.service ● daemontools.service - Daemontools service supervision Loaded: loaded (/lib/systemd/system/daemontools.service; enabled; vendor pres Active: active (running) since Thu 2018-08-16 13:47:53 CEST; 3 days ago Main PID: 1426 (svscanboot) CGroup: /system.slice/daemontools.service
xD
Pozdro
Ostatnio edytowany przez Jacekalex (2018-08-19 16:40:14)
Offline
Do tego można z takimi skrytami fruwać między różnymi systemami Linuxa i BSD,[/quote]
Wszystko wygląda fajnie do czasu, aż przejmujesz po kimś maszynę pełną takich skryptów pisanych na kolanie i musisz w takim bajzlu zgadywać „co poeta miał na myśli”.
PS Systemd zarządzający daemontools — bardzo pokrętna ta twoja logika :D
Offline
* * * * * komenda do wykonania - - - - - | | | | | | | | | +----- dzień tygodnia (0 - 6) (Niedziela=0) | | | | | | | +------- miesiąc (1 - 12) | | | | | +--------- dzień miesiąca (1 - 31) | | | +----------- godzina (0 - 23) | +------------- minuta (0 - 59)
Co pół minuty to byłoby coś a`la
*/30 * * * * /user/bin/skrypt_do_wykonania
[url=http://pl.docs.pld-linux.org/uslugi_cron.html]Wiki PLD[/url]
Ostatnio edytowany przez numer_inaczej (2018-08-19 20:01:30)
Offline
Cron się do tego w ogóle nie nadaje bo nie operuje na sekundach.
Twój przykład by działał co 30 min.
Cron, przez swój nieudolny mechanizm (operuje na pętlach) zarżnął by większość maszyn przy operacjach wymagających większej powtarzalności niż jedna minuta i z tego powodu ma zaimplementowane takie ograniczenie.
Dlatego powstają nowocześniejsze i wydajniejsze narzędzia (np. systemd.timer), ale niektórzy wolą dalej siedzieć w swojej jaskini ;)
Offline
[quote=yossarian]
Do tego można z takimi skrytami fruwać między różnymi systemami Linuxa i BSD,[/quote]
Wszystko wygląda fajnie do czasu, aż przejmujesz po kimś maszynę pełną takich skryptów pisanych na kolanie i musisz w takim bajzlu zgadywać „co poeta miał na myśli”.
PS Systemd zarządzający daemontools — bardzo pokrętna ta twoja logika :D[/quote]
Jak przejmuję po kimś maszynę, to zazwyczaj widzę tam wybitnych ekspertów od konfiguracji Internet Explorera.
Z resztą 90% takich przejmowanych serwerów to maszyny, którymi ktoś się zajmował wieki temu, i teraz pilnie jest potrzeba admina, bo "przestało działać".
Ostatni taki "przejęty serwer" miał Debiana 4.0, a przestał działać bo się w nim
system plików ext3 posypał (po 10 latach miał prawo).
Wstępna diagnoza wykazała agonię dyzia, a ostatni backup był zrobiony w roku 2009.
Także garsć prostych skryptów to wcale nie jest żadna tragedia w odziedziczonym serwerze.
Zazwyczaj można tam dużo gorsze niespodzianki znaleźć, w 8 przypadkach na 10
i tak trzeba taki serwer przeorać, bo żadna aktualizacja już tam pomóc nie może.
Pomijam wypadki typu "ratunku, mój serwer zaczął nagle sam z siebie tony spamu wysyłać, co robić!!!".
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
[quote=Jacekalex][quote=yossarian]@Jacekalex: Te Twoje prowizoryczne skrypty i narzędzie porzucone prawie 20 lat temu są bardzo KISS :D[/quote]
I cóż z tego?
Działają zawsze, działają niezawodnie, są najbardziej odporne na aktualizacje systemu.
Do tego można z takimi skrytami fruwać między różnymi systemami Linuxa i BSD,
co przy systemd nie jest aż takie oczywiste.
I to jest podstawowe kryterium oceny dla mnie.[/quote]
Zapomniałeś o OS X, na którym też to pójdzie :D
Offline
[quote=jezoo][quote=Jacekalex][quote=yossarian]@Jacekalex: Te Twoje prowizoryczne skrypty i narzędzie porzucone prawie 20 lat temu są bardzo KISS :D[/quote]
I cóż z tego?
Działają zawsze, działają niezawodnie, są najbardziej odporne na aktualizacje systemu.
Do tego można z takimi skrytami fruwać między różnymi systemami Linuxa i BSD,
co przy systemd nie jest aż takie oczywiste.
I to jest podstawowe kryterium oceny dla mnie.[/quote]
Zapomniałeś o OS X, na którym też to pójdzie :D[/quote]
Ale za to w Windows 10 nie działa. xD
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00104 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.128.200.165' WHERE u.id=1 |
0.00064 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.128.200.165', 1733247346) |
0.00047 | SELECT * FROM punbb_online WHERE logged<1733247046 |
0.00061 | DELETE FROM punbb_online WHERE ident='18.223.237.218' |
0.00044 | SELECT topic_id FROM punbb_posts WHERE id=321175 |
0.00102 | SELECT id FROM punbb_posts WHERE topic_id=30590 ORDER BY posted |
0.00065 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30590 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00086 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30590 ORDER BY p.id LIMIT 0,25 |
0.00088 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30590 |
Total query time: 0.0068 s |