Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-10-2013, 22:29   #1
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Script start e stop

Ciao a tutti, sono nuovo è ho un problema con un script da me modificato, spero possiate aiutarmi!

Sto utilizzando raspbian su un raspberry pi model B.

Ho creato uno script chiamato "prova.sh" inserito nella cartella /etc/init.d; tale script mediante il comando start si avvia ed esegue all'infinito un file chiamato mysql.php, con il comando stop si ferma. Il file php si occupa di salvare dei dati acquisiti da seriale su un database mysql continuativamente; tutto sembra funzionare alla perfezione. Dopo qualche decina di minuti di funzionamento smette di salvare i dati sul database remoto, ma apparentemente (testandone il PID) lo script sembra essere in run, infatti è comunque stoppabile. Inoltre, quasi sempre, qualche ora dopo i dati ricominciano ad arrivare senza problemi per poi interrompersi qualche decina di minuti dopo.

Di seguito posto il codice dello script, mentre ritengo non necessario il codice php (se dovesse servire ditelo):
Codice:
lockFile=/home/pi/prova.pidif [ -f $lockFile ]; then
CPID="`cat $lockFile`"
fi


looping ()
{ 
while true # To infinity ... and beyond!
do
php /var/www/mysql/mysql.php 
done
}


case $1 in
start)
  


  if [ ! -f $lockFile ]; then
    echo "Starting script.."
looping &
    echo $! > /home/pi/prova.pid


  else
    echo "Script is already started as PID:$CPID"
  fi
;;
stop)
  if [ -f $lockFile ]; then
    kill -9 $CPID
    rm $lockFile
    sleep 1
    echo "Stopping Script"
  else
    echo "Script was already stopped"
  fi
;;
admin)  
 
 
;;
*)
clear
echo "
Usage: Script { start | stop }
"
;;
esac
exit 0
Spero vivamente possiate aiutarmi, grazie in anticipo.

Ultima modifica di piez91 : 05-10-2013 alle 09:59.
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2013, 23:07   #2
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Ci sono messaggi di errore nei log di MySQL?
Da come descrivi il problema mi vien da pensare all'esaurimento delle connessioni contemporanee offerte da MySQL, ma non dovrebbe succedere, a meno che lo script php non sia particolarmente estroso.
Quanto tempo passa tra un inserimento di dati ed il successivo? Come viene implementata l'attesa?

Hai provato ad eseguire la funzione looping in un terminale per vedere se ottieni qualche messaggio di errore dopo qualche minuto?
Codice:
gimli@sertan ~ $ looping () {  while true ; do php /var/www/mysql/mysql.php ; done; }
gimli@sertan ~ $ looping
Qualche interrogazione per controllare i valori relativi al numero di connessioni possibili (max_connections), aperte (Threads_connected), massime aperte contemporaneamente (Max_used_connections).
Codice:
gimli@sertan ~ $ mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.32-MariaDB-log Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]> show global status like 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 1     |
+-------------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 2     |
+----------------------+-------+
1 row in set (0.00 sec)
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2013, 09:58   #3
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Ti ringrazio della risposta. Facendo il loop da terminale, come da te indicato si comporta allo stesso modo. Errori in output da database Mysql non ne ricevo, nonostante abbia implementato il codice di cattura eccezione da php.
Il codice di connessione al database è il seguente:
Codice:
try
{
  $pdo = new PDO($host,'$user','$pw');
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $pdo->exec('SET NAMES "utf8"');
}
catch (PDOException $e)
{
	
echo($e);
}

Come prova, proprio per capire la provenienza del problema, ho deciso di non implementare un tempo di attesa nel codice PHP; ma faccio rifare la connessione al database Mysql ogni ciclo, la quale viene poi lasciata chiudere automaticamente ad ogni fine esecuzione del file PHP. Il tutto dura 1 secondo circa.

Questo è il risultato dei 3 comandi di test:
Codice:
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show global status like 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 3     |
+-------------------+-------+
1 row in set (0.00 sec)

mysql> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 4     |
+----------------------+-------+
1 row in set (0.00 sec)

mysql>

A titolo di prova ho avviato il codice questa notte, implementando un ritardo di 3 minuti circa tra un ciclo è l'altro. Apparentemente tutto sembra funzionare, dunque il problema potrebbe effettivamente essere imputabile al numero di connessioni, ma non essendo mai contemporanee per le ragioni spiegate prima non saprei trovare una soluzione.
Codice con il ritardo:
Codice:
looping ()
{
while true # To infinity ... and beyond!
do
php /var/www/mysql/mysql.php
sleep 177;
done
}

Ultima modifica di piez91 : 05-10-2013 alle 10:07.
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2013, 11:41   #4
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
L'esecuzione dovrebbe procedere in questo modo:
  1. la funzione looping lancia php e rimane in attesa
  2. php si connette a MySQL
  3. inserimento dati e/o calcoli
  4. termine esecuzione script php e disconnessione da database MySQL
Immagino che i tre SHOW su MySQL li abbia eseguiti durante l'esecuzione della versione problematica o dopo il manifestarsi del problema.
In tal caso, come puoi vedere, i valori sono normalissimi.

Altra idea: l'utente in uso ha qualche limite orario impostato? Si tratta di valori che *non* dovrebbero essere impostati automaticamente alla creazione di un utente.
Esempio di interrogazione ed impostazione:
Codice:
MariaDB [mysql]> SELECT user, max_questions, max_updates, max_connections FROM mysql.user WHERE user = 'user1';
+-------+---------------+-------------+-----------------+
| user  | max_questions | max_updates | max_connections |
+-------+---------------+-------------+-----------------+
| user1 |             0 |           0 |               0 |
+-------+---------------+-------------+-----------------+
1 row in set (0.00 sec)

MariaDB [mysql]> GRANT USAGE ON *.* TO 'user1'@'localhost' WITH MAX_QUERIES_PER_HOUR 2000 MAX_UPDATES_PER_HOUR 1000;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> SELECT user, max_questions, max_updates, max_connections FROM mysql.user WHERE user = 'user1';
+-------+---------------+-------------+-----------------+
| user  | max_questions | max_updates | max_connections |
+-------+---------------+-------------+-----------------+
| user1 |          2000 |        1000 |               0 |
+-------+---------------+-------------+-----------------+
1 row in set (0.00 sec)
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2013, 19:38   #5
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Esatto, il funzionamento dello script è esattamente quello.
Adesso ho provvisoriamente risolto facendolo eseguire ogni 2 minuti invece che in tempo reale ogni secondo.

Ormai è tutto il week end che funziona ininterrottamente, quindi il problema potrebbe effettivamente essere imputabile al numero massimo di connessioni possibili in un certo intervallo di tempo, purtroppo non so come cambiarne il valore. Sapresti aiutarmi?


Grazie e scusa per il ritardo nella risposta.
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2013, 21:08   #6
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Hai provato le due select che ho scritto nell'ultimo post?
Ovviamente devi sostituire il mio utente di esempio user1 con l'utente usato dallo script.

Altra idea: hai qualche firewall impostato?
Per vedere un elenco delle regole ipv4 attive:
Codice:
iptables -v -nL
Per finire, messaggi sospetti in dmesg?
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2013, 22:43   #7
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Come prima prova ho fatto le query da te indicate:
Codice:
mysql> SELECT user, max_questions, max_updates, max_connections FROM mysql.user WHERE user = 'root';
+------+---------------+-------------+-----------------+
| user | max_questions | max_updates | max_connections |
+------+---------------+-------------+-----------------+
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
+------+---------------+-------------+-----------------+
6 rows in set (0.00 sec)

mysql> GRANT USAGE ON *.* TO 'root'@'localhost' WITH MAX_QUERIES_PER_HOUR 2000 MAX_UPDATES_PER_HOUR 1000;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT user, max_questions, max_updates, max_connections FROM mysql.user WHERE user = 'root';
+------+---------------+-------------+-----------------+
| user | max_questions | max_updates | max_connections |
+------+---------------+-------------+-----------------+
| root |          2000 |        1000 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
| root |             0 |           0 |               0 |
+------+---------------+-------------+-----------------+
6 rows in set (0.00 sec)

mysql>
Per le varie prove ho utilizzato l'utente root, ovviamente provvederò ad una gestione utenti quando funzionerà tutto. Suppongo ora di dover provare lo script in tempo reale, domani mattina lo avvio e vediamo se è risolto, dovrei aggiornare tutte le righe root ai valori da te indicati?


Per quanto riguarda il comando ipv4 non so bene cosa mi stai facendo fare, in qualunque caso ricevo un errore poco rassicurante:
Codice:
dbmysql@mysql:~$ iptables -v -nL
FATAL: Error inserting ip_tables (/lib/modules/3.2.0-53-generic-pae/kernel/net/ipv4/netfilter/ip_tables.ko): Operation not permitted
iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Domani mattina quando avvierò lo script proverò a postare il risultato di dmesg, che adesso ritengo poco attendibile.


Grazie ancora della pazienza
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2013, 22:49   #8
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Non ho riletto quel che avevo scritto sabato, una delle due query impostava il limite, rimuovilo:
Codice:
GRANT USAGE ON *.* TO 'root'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
In ogni caso non era impostato.

Direi che iptables non è attivo.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2013, 18:02   #9
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
dunque quei valori impostati a zero tolgono ogni limite al massimo numero di connessioni?
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2013, 21:10   #10
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Sì, anche quel limite non c'entra.

Qualche mese fa ho testato un plugin che registra le connessioni effettuate, bombardando un'istanza di MySQL a raffiche di 5500 connessioni in locale e remoto contemporaneamente: non faceva una piega. Non avevo fatto impostazioni particolari, quindi non riesco ad immaginare cosa possa darti questo problema. Potrebbe però anche essere un problema specifico ad architetture ARM...

Non è che è ciò con cui comunichi via seriale che si arrende dopo un po'?
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2013, 09:14   #11
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Dubito ci possa essere un problema dal punto di vista seriale, avevo già fatto delle prove e mai nulla si era bloccato.

Ho notato una cosa strana però, potrebbe esserci qualche tipo di problema con i permessi di esecuzione dello script? E possibile che "perda" i permessi di esecuzione dopo un certo tempo?
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2013, 17:36   #12
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
questo è il risultato di dmesg qualche minuto dopo il bloccaggio dello script:
Codice:
pi@raspberrypi ~ $ dmesg
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.6.11+ (dc4@dc4-arm-01) (gcc version 4.7.2 2012073                      1 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #474                       PREEMPT Thu Jun 13 17:14:42 BST 2013
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr                      =00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruc                      tion cache
[    0.000000] Machine: BCM2708
[    0.000000] cma: CMA: reserved 16 MiB at 1d000000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 122880
[    0.000000] free_area_init_node: node 0, pgdat c053b854, node_mem_map c05e500                      0
[    0.000000]   Normal zone: 960 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 121920 pages, LIFO batch:31
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pag                      es: 121920
[    0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 b                      cm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0xf8d91084 smsc95xx.m                      acaddr=B8:27:EB:D9:10:84 sdhci-bcm2708.emmc_clock_freq=100000000 vc_mem.mem_base                      =0x1ec00000 vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115                      200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 eleva                      tor=deadline rootwait
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 480MB = 480MB total
[    0.000000] Memory: 464776k/464776k available, 26744k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xde800000 - 0xff000000   ( 520 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xde000000   ( 480 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc04e647c   (4986 kB)
[    0.000000]       .init : 0xc04e7000 - 0xc0507f24   ( 132 kB)
[    0.000000]       .data : 0xc0508000 - 0xc053c080   ( 209 kB)
[    0.000000]        .bss : 0xc053c0a4 - 0xc05e4758   ( 674 kB)
[    0.000000] NR_IRQS:330
[    0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4                      294967ms
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [tty1] enabled
[    0.001027] Calibrating delay loop... 697.95 BogoMIPS (lpj=3489792)
[    0.060123] pid_max: default: 32768 minimum: 301
[    0.060458] Mount-cache hash table entries: 512
[    0.061214] Initializing cgroup subsys cpuacct
[    0.061268] Initializing cgroup subsys devices
[    0.061301] Initializing cgroup subsys freezer
[    0.061330] Initializing cgroup subsys blkio
[    0.061420] CPU: Testing write buffer coherency: ok
[    0.061756] hw perfevents: enabled with v6 PMU driver, 3 counters available
[    0.061899] Setting up static identity map for 0x39d698 - 0x39d6f4
[    0.063391] devtmpfs: initialized
[    0.074040] NET: Registered protocol family 16
[    0.080482] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.081580] bcm2708.uart_clock = 0
[    0.082968] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[    0.083022] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.083059] mailbox: Broadcom VideoCore Mailbox driver
[    0.083154] bcm2708_vcio: mailbox at f200b880
[    0.083253] bcm_power: Broadcom power driver
[    0.083292] bcm_power_open() -> 0
[    0.083318] bcm_power_request(0, 8)
[    0.584007] bcm_mailbox_read -> 00000080, 0
[    0.584051] bcm_power_request -> 0
[    0.584078] Serial: AMBA PL011 UART driver
[    0.584222] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3
[    0.908056] console [ttyAMA0] enabled
[    0.931698] bio: create slab <bio-0> at 0
[    0.936584] SCSI subsystem initialized
[    0.940680] usbcore: registered new interface driver usbfs
[    0.946265] usbcore: registered new interface driver hub
[    0.951858] usbcore: registered new device driver usb
[    0.958212] Switching to clocksource stc
[    0.962450] FS-Cache: Loaded
[    0.965584] CacheFiles: Loaded
[    0.980358] NET: Registered protocol family 2
[    0.985638] TCP established hash table entries: 16384 (order: 5, 131072 bytes                      )
[    0.993378] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
[    1.000167] TCP: Hash tables configured (established 16384 bind 16384)
[    1.006770] TCP: reno registered
[    1.010023] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    1.015922] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    1.022510] NET: Registered protocol family 1
[    1.027375] RPC: Registered named UNIX socket transport module.
[    1.033417] RPC: Registered udp transport module.
[    1.038139] RPC: Registered tcp transport module.
[    1.042888] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.050000] bcm2708_dma: DMA manager at f2007000
[    1.054791] bcm2708_gpio: bcm2708_gpio_probe c0515d98
[    1.060258] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000                      000(512 MiB)
[    1.069407] audit: initializing netlink socket (disabled)
[    1.075001] type=2000 audit(0.930:1): initialized
[    1.196848] VFS: Disk quotas dquot_6.5.2
[    1.200882] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.207946] FS-Cache: Netfs 'nfs' registered for caching
[    1.213698] NFS: Registering the id_resolver key type
[    1.218860] Key type id_resolver registered
[    1.223155] Key type id_legacy registered
[    1.227519] msgmni has been set to 939
[    1.233041] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 2                      52)
[    1.240763] io scheduler noop registered
[    1.244805] io scheduler deadline registered (default)
[    1.249988] io scheduler cfq registered
[    1.273979] Console: switching to colour frame buffer device 82x26
[    1.285372] kgdb: Registered I/O driver kgdboc.
[    1.292547] vc-cma: Videocore CMA driver
[    1.298354] vc-cma: vc_cma_base      = 0x00000000
[    1.304929] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.312085] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.328163] brd: module loaded
[    1.337910] loop: module loaded
[    1.343144] vchiq: vchiq_init_state: slot_zero = 0xdd000000, is_master = 0
[    1.352553] Loading iSCSI transport class v2.0-870.
[    1.360133] usbcore: registered new interface driver smsc95xx
[    1.367923] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.580581] Core Release: 2.80a
[    1.585498] Setting default values for core params
[    1.592003] Finished setting default values for core params
[    1.804406] Using Buffer DMA mode
[    1.809408] Periodic Transfer Interrupt Enhancement - disabled
[    1.816921] Multiprocessor Interrupt Enhancement - disabled
[    1.824195] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.830227] Dedicated Tx FIFOs mode
[    1.836389] dwc_otg: Microframe scheduler enabled
[    1.836805] dwc_otg bcm2708_usb: DWC OTG Controller
[    1.843538] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number                       1
[    1.852676] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000
[    1.859921] Init: Port Power? op_state=1
[    1.865558] Init: Power Port (0)
[    1.870559] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.879213] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=                      1
[    1.888296] usb usb1: Product: DWC OTG Controller
[    1.894863] usb usb1: Manufacturer: Linux 3.6.11+ dwc_otg_hcd
[    1.902465] usb usb1: SerialNumber: bcm2708_usb
[    1.909532] hub 1-0:1.0: USB hub found
[    1.915152] hub 1-0:1.0: 1 port detected
[    1.921111] dwc_otg: FIQ enabled
[    1.921130] dwc_otg: NAK holdoff enabled
[    1.921151] Module dwc_common_port init
[    1.921376] Initializing USB Mass Storage driver...
[    1.928283] usbcore: registered new interface driver usb-storage
[    1.936096] USB Mass Storage support registered.
[    1.942616] usbcore: registered new interface driver libusual
[    1.950393] mousedev: PS/2 mouse device common for all mice
[    1.958530] bcm2835-cpufreq: min=700000 max=700000 cur=700000
[    1.966213] bcm2835-cpufreq: switching to governor powersave
[    1.973647] bcm2835-cpufreq: switching to governor powersave
[    1.980976] cpuidle: using governor ladder
[    1.986742] cpuidle: using governor menu
[    1.992353] sdhci: Secure Digital Host Controller Interface driver
[    2.000178] sdhci: Copyright(c) Pierre Ossman
[    2.006251] sdhci: Enable low-latency mode
[    2.052548] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platfor                      m's DMA
[    2.063844] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77
[    2.073642] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.086845] usbcore: registered new interface driver usbhid
[    2.094317] usbhid: USB HID core driver
[    2.104717] TCP: cubic registered
[    2.111963] Initializing XFRM netlink socket
[    2.120231] Indeed it is in host mode hprt0 = 00021501
[    2.127293] NET: Registered protocol family 17
[    2.142520] Key type dns_resolver registered
[    2.152714] VFP support v0.3: implementor 41 architecture 1 part 20 variant b                       rev 5
[    2.174513] mmc0: read SD Status register (SSR) after 2 attempts
[    2.193058] registered taskstats version 1
[    2.201833] Waiting for root device /dev/mmcblk0p2...
[    2.209164] mmc0: new high speed SDHC card at address 0002
[    2.232390] mmcblk0: mmc0:0002 00000 7.32 GiB
[    2.240165]  mmcblk0: p1 p2
[    2.357014] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. O                      pts: (null)
[    2.369230] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.377329] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.386236] Indeed it is in host mode hprt0 = 00001101
[    2.400525] devtmpfs: mounted
[    2.412747] Freeing init memory: 128K
[    2.602718] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
[    2.611796] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.623062] hub 1-1:1.0: USB hub found
[    2.629041] hub 1-1:1.0: 3 ports detected
[    2.912613] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    3.042998] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    3.051955] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber                      =0
[    3.081349] smsc95xx v1.0.4
[    3.157322] smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at usb-bcm2708_usb-                      1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:d9:10:84
[    3.252789] usb 1-1.2: new full-speed USB device number 4 using dwc_otg
[    3.379156] usb 1-1.2: New USB device found, idVendor=0403, idProduct=6001
[    3.401954] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber                      =3
[    3.415384] usb 1-1.2: Product: FT232R USB UART
[    3.422003] usb 1-1.2: Manufacturer: FTDI
[    3.442440] usb 1-1.2: SerialNumber: A10127QQ
[    3.797162] udevd[154]: starting version 175
[    4.948620] Registered led device: led0
[    4.994454] usbcore: registered new interface driver usbserial
[    5.064298] usbcore: registered new interface driver usbserial_generic
[    5.201229] USB Serial support registered for generic
[    5.417919] usbserial: USB Serial Driver core
[    5.596339] usbcore: registered new interface driver ftdi_sio
[    5.856903] USB Serial support registered for FTDI USB Serial Device
[    5.964224] ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
[    6.074414] usb 1-1.2: Detected FT232RL
[    6.080432] usb 1-1.2: Number of endpoints 2
[    6.189858] usb 1-1.2: Endpoint 1 MaxPacketSize 64
[    6.252625] usb 1-1.2: Endpoint 2 MaxPacketSize 64
[    6.259378] usb 1-1.2: Setting MaxPacketSize 64
[    6.341499] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUS                      B0
[    6.393258] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
[    8.605924] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    9.004455] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[   17.885802] smsc95xx 1-1.1:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xCD                      E1
[   22.560331] Adding 102396k swap on /var/swap.  Priority:-1 extents:2 across:5                      07900k SS
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2013, 17:40   #13
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Ho inoltre fatto un'altra prova, al posto di salvare su database ho provato a salvare su file di testo. In entrambi i casi avviene l'arresto anomalo.

Non so proprio più dove guardare
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2013, 21:15   #14
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Considerando l'ultima affermazione escluderei che il problema sia in MySQL.

Puoi postare lo script php?
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2013, 18:23   #15
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
diventa un po' lungo copiare tutto il codice, molto lungo.
Codice:
#!/usr/bin/php
<?php
	include("config.php");



	
	//Leggo il contenuto del file per verificarne lo stato di errore
	$file_err=fopen("/var/www/mysql/file_err.txt","r+");
	$err=file("/var/www/mysql/file_err.txt");
	fclose($file_err);

	
	
	

	
	//connessione al database con cattura eccezione
	try
	{
 	 	$pdo = new PDO($host,'******','*****');
  		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  		$pdo->exec('SET NAMES "utf8"');
		
		if($err[0]==0){
			
			for($i=2;$i<=$n_inv+1;$i++){	//ciclo per il numero di inverter
				include("leggiseriale.php");
				include("caricasql.php");
			}
			
			
		}
		elseif($err[0]==1){
			include("caricafile.php");
			
			$file_rete=fopen("/var/www/mysql/file_rete.txt","w+");
			fclose($file_rete);
			
			for($i=2;$i<=$n_inv+1;$i++){	//ciclo per il numero di inverter
				include("leggiseriale.php");
				include("caricasql.php");
			}
			
			$file_err=fopen("/var/www/mysql/file_err.txt","w+");
			fwrite($file_err, "0");
			fclose($file_err);
			
		}


	}
	catch (PDOException $e)
	{
		//scrivo nel file di errore che c'è stato un errore
		$file_err=fopen("/var/www/mysql/file_err.txt","w+");
		fwrite($file_err, "1");
		fclose($file_err);

		for($i=2;$i<=$n_inv+1;$i++){	//ciclo per il numero di inverter
			
			include("leggiseriale.php");
			include("salvafile.php");

		}
		
		
		
	}



?>

ci sono i vari file inclusi che fanno ciò che è descritto dal nome. Questa è la prima pagina iniziale, c'è la connessione al database e una semplice gestione errori tramite salvataggio su file; in pratica se manca la connessione salva su un file di testo e carica appena la connessione ritorna. Il tutto si occupa di leggere da seriale di un inverter.
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2013, 18:48   #16
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Stavo cercando di capire se esiste un modo per registrare nello script bash un log di eventi generati da lui stesso. Per poter eventualmente capire dove va in errore. Conosci qualcosa di simile?
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2013, 21:10   #17
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Essendo uno script php Bash non c'entra praticamente nulla.
Non considero php lo strumento migliore per creare script generici, ma è questione di gusti e fluenza nel linguaggio.

Hai attivato i messaggi di errore in PHP?
Controlla queste variabili abbiano questo valore nel tuo file php-cli.ini (se esiste è specifico per l'esecuzione da terminale) o php.ini (dovrebbero trovarsi da qualche parte nella cartella /etc/phpN/ con N correlato alla versione installata):
Codice:
error_reporting = E_ALL
display_errors = On
Inoltre nel codice non deve essere presente questa dichiarazione:
Codice:
error_reporting(0);
Non sono a conoscenza ne ho trovato uno strumento che possa analizzare l'esecuzione senza modificare il codice, ma ribadisco che la mia conoscenza del linguaggio php è piuttosto limitata.

Un paio di cose riguardo al codice
leggiseriale.php e caricasql.php hanno un po' di gestione degli errori? Lanciano thread figli e/o aprono "file globali" come /var/www/mysql/file_err.txt?
L'eccezione PDOException contiene un'utile descrizione dell'errore riscontrato, perché non scriverlo? (lo stesso vale per ogni altra eventuale eccezione catturata in altri punti)
Codice:
catch (PDOException $e)
{
	//scrivo nel file di errore che c'è stato un errore
	$file_err=fopen("/var/www/mysql/file_err.txt","w+");
	fwrite($file_err, $e->getMessage());
	fclose($file_err);


}
La lettura avviene anche in caso di errore di connessione?
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2013, 22:30   #18
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Si, il PHP non è così immediato per uno script di questo tipo, ma ritengo sia il miglior strumento per eseguire uno script e interfacciarsi con una pagina html di visualizzazione dati.

Veniamo ai consigli:
I messaggi di errore di PHP li ho attivati dal file da te indicatomi, a scopo informativo si trova in /etc/php5/cgi, si chiama php.ini. Ma come si visualizzano gli errori riportati? li restituisce nel terminale?

L'errore $e l'ho sempre visualizzato, per qualche motivo l'ho tolto dal codice, probabilmente stavo facendo delle prove. I file inclusi hanno una gestione errori, in particolare catturo il tentativo fallito di effettuare la query sul server mysql.

Per quanto riguarda la lettura da seriale, utilizzo una stringa di comando da passare alla shell di linux, che a sua volta va a eseguire la libreria scritta in c++ che interroga il dispositivo seriale. Il metodo più veloce è di postare una parte di codice di acquisizione da seriale:
Codice:
	//acquisizione serial number
	$serialn="comando da eseguire nella shell";
	$serialnreturn = shell_exec($serialn);
	$serialnarray = preg_split('/[[:space:]]+/', $serialnreturn);
in effetti questa parte è l'unica a non avere una gestione errori. L'unico modo per gestire questo tipo di errore sarebbe quello di interpretare correttamente il contenuto di $serialn in caso errore.
Nelle mie prove ho comunque già visualizzato a terminale il contenuto di tale variabile, notando che durante il blocco improvviso dello script non restituisce errori.


Adesso sto modificando il codice per salvare uno storico di tutti le eccezioni catturate:
-quella di mancata connessione al database mysql (l'interrogazione seriale avviene comunque e senza errori in caso di errore di connessione al database, in quanto mi è utile salvare il tutto in un file di testo e inviarne il contenuto al ritorno della connessione).
-l'eccezione di query fallita.
-lo storico di tutti gli errori di acquisizione da seriale.



Da qui in avanti le mie capacità finisco e non so più dove sbattere la testa, spero di essere stato discretamente chiaro nonostante l'ora.
piez91 è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2013, 13:55   #19
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Proposta di controllo output passthru:
Codice:
<?php
	//acquisizione serial number
	$serialn="ls -la 2>&1"; //Nota le redirezione dello stderr in stdout
	ob_start();
	$return_var = (int)1;
	passthru($serialn, $return_var);
	$serialnreturn = ob_get_clean();

	echo "Output: \n".$serialnreturn."\n"; //Output di debug, eliminabile
	echo "Return value: ".$return_var."\n"; //Output di debug, eliminabile

	if( $return_var === 0 ) //Nessun errore
		$serialnarray = preg_split('/[[:space:]]+/', $serialnreturn);
	else
		echo "ERROR!\n";
?>
Esempio di esecuzione con successo:
Codice:
gimli@sertan ~/Desktop $ php test.php 
Output: 
totale NN
drwxr-xr-x  2 gimli gimli 4096 13 ott 13.40 .
drwxr-xr-x 79 gimli gimli 4096 13 ott 13.19 ..
-rw-r--r--  1 gimli gimli   65 25 gen  2009 .directory
-rw-r--r--  1 gimli gimli  366 13 ott 13.45 test.php

Return value: 0
Esempio di output con errore (ls -la INESISTENTE 2>&1):
Codice:
gimli@sertan ~/Desktop $ php test.php  
Output: 
ls: impossibile accedere a INESISTENTE: File o directory non esistente

Return value: 2
ERROR!
Ovviamente questo flusso necessita che il programma C++ abbia valori di ritorno standard corretti o che abbia almeno un valore di ritorno in caso di successo ed uno diverso in caso di errore.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2013, 11:51   #20
piez91
Member
 
Iscritto dal: Sep 2010
Messaggi: 61
Ho implementato la gestione errori similmente a come tu hai consigliato. Per adesso funziona, sto intercettando tutti gli errori possibili.
Ho il sospetto che a questo punto funzioni tutto correttamente, in quanto non si è più bloccato; suppongo che quindi il problema fosse dovuto a una cattura di errore non corretta, la quale faceva bloccare lo script.

Qualche giorno ancora di test e ti farò sapere, ma ormai è da 4 giorni che funziona senza problemi!

Grazie mille!!
piez91 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Realme 16: il nuovo mid-range che si isp...
DAZN lancia il piano Full Mobile a 19,99...
Samsung Galaxy S26, ormai è tutto...
Smartphone sempre più cari: super...
L'ultima puntata di Falsissimo rimossa d...
NASA Perseverance ha utilizzato percorsi...
Blue Origin sospende per almeno due anni...
Stampanti, Los Angeles verso il divieto ...
Roscosmos Amur: il razzo spaziale riutil...
Robot aspirapolvere per tutte le tasche:...
Accedere alle mail di un lavoratore lice...
Amazon Haul scatenato: migliaia di prodo...
Amazon Seconda Mano rilancia: sconto ext...
Super prezzo Amazon per ECOVACS DEEBOT T...
NVIDIA Shield TV: dieci anni di aggiorna...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v