Strona 1 z 1

watchdog, na czym polega?

: 25 cze 2018, 16:17
autor: Borneq
Czy to jest jakieś polecenie Linuxa podobnie jak nohup?
Chciałbym aby mój program działał jako daemon (nohup), ale żeby był watchdog, aby nie zabijał mojego programu, ale za to program działałby sam przez pewien czas i kończył działanie, wtedy watchdog wznawiał by go. Jak to zrobić?

Re: watchdog, na czym polega?

: 25 cze 2018, 17:33
autor: jacekalex
Najlepszy do tego jest moim zdaniem daemontools (jest w repo).
Strona programu:
https://cr.yp.to/daemontools.html

Przykładowo uruchamianie serwera Mysql przez daemontoolsa u mnie:

Kod: Zaznacz cały

root ~> cat /service/mysqld/run

Kod: Zaznacz cały

#!/bin/sh

exec 2>&1
mkdir -p /var/run/mysqld;
chown mysql:mysql /var/run/mysqld;
chmod 1777 /var/run/mysqld;
mkdir -p mkdir -p /var/spool/postfix/var/run/mysqld;
grep '/var/spool/postfix/var/run/mysqld' /proc/mounts 2>&1 >/dev/null || mount -o bind /var/run/mysqld  /var/spool/postfix/var/run/mysqld;
exec /usr/bin/setuidgid mysql /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
Czy działa:

Kod: Zaznacz cały

 svstat /service/mysqld/
/service/mysqld/: up (pid 6648) 679652 seconds

Kod: Zaznacz cały

echo status | mysql -u root -p
Enter password: 
--------------
mysql  Ver 15.1 Distrib 10.1.31-MariaDB, for Linux (x86_64) using readline 6.3

Connection id:		1358
Current database:	
Current user:		root@localhost
SSL:			Cipher in use is DHE-RSA-AES256-SHA
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server:			MariaDB
Server version:		10.1.31-MariaDB Source distribution
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8mb4
Db     characterset:	utf8mb4
Client characterset:	utf8mb4
Conn.  characterset:	utf8mb4
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			7 days 20 hours 51 min 19 sec

Threads: 3  Questions: 156001  Slow queries: 0  Opens: 54  Flush tables: 1  Open tables: 48  Queries per second avg: 0.229

Note that you are running in safe_update_mode:
UPDATEs and DELETEs that don't use a key in the WHERE clause are not allowed.
(One can force an UPDATE/DELETE by adding LIMIT # at the end of the command.)
SELECT has an automatic 'LIMIT 1000' if LIMIT is not used.
Max number of examined row combination in a join is set to: 1000000

--------------
:clap:

A to np serwer Voip Asterisk:

Kod: Zaznacz cały

# G1 ###   pon cze 25 17:46:58  domek : ~ 
root ~> cat /service/asterisk/run
#!/bin/sh

exec 2>&1
exec /usr/bin/setuidgid asterisk /usr/sbin/asterisk -f
Pozdro
:craz: