motion usuwanie starych plików
|
khain |
Dodano 08-12-2014 09:01
|
Power User
Posty: 335
Dołączył: 25/07/2007 17:09
|
Mam problem z usuwaniem plików starszych niż 7 dni. Używam takiego skryptu w cronie:
#!/opt/bin/bash
find /nas/camera/ -mtime +7 -exec rm {} \
sleep 3600
exit 0
Skrypt prawidłowo usuwa wszystkie pliki, jeśli wykonam go w cli lub w zakładce "System commands". Natomiast w cronie nie usuwa plików, choć się wykonuje. Problemem jest pewnie to, że w cronie skrypt od razu wraca do linii poleceń i przerywa usuwanie plików, natomiast w cli, gdy poczekam aż sam wróci do linii poleceń (a trwa to długo) to usunie wszystkie pliki. Dodanie sleep lub wait po komendzie find nie pomaga. Proszę o pomoc.
TP-LINK TL-WDR3600 @ Openwrt - 300/20Mbps
HP ProLiant DL360e Gen8 @ ESXi 7.0.1:2 x Intel Xeon CPU E5-2450L @ 1.80GHz, 160GB RAM ECC, 2x 1TB SSD
ASRock J4205-ITX @ Debian 11 16BG RAM, 2x 1TB SSD, 1x 1TB HDD
|
|
|
|
hermes-80 |
Dodano 08-12-2014 18:33
|
VIP
Posty: 3676
Dołączył: 21/04/2009 11:24
|
A w screenie próbowałeś ?
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
|
|
|
|
khain |
Dodano 08-12-2014 21:44
|
Power User
Posty: 335
Dołączył: 25/07/2007 17:09
|
Próbowałem i efekt taki sam:
#!/opt/bin/bash
screen -dmS camera find /nas/camera/ -mtime +6 -exec rm {} \
sleep 3600
exit 0 Skrypt się wykonuje zarówno z cli jak i z crona, ale w cronie nadal od razu kończy działanie przez co nie usuwa żadnych plików:
Dec 8 21:39:01 router cron.info crond[27108]: crond: USER root pid 28437 cmd /opt/etc/cameradel.sh
TP-LINK TL-WDR3600 @ Openwrt - 300/20Mbps
HP ProLiant DL360e Gen8 @ ESXi 7.0.1:2 x Intel Xeon CPU E5-2450L @ 1.80GHz, 160GB RAM ECC, 2x 1TB SSD
ASRock J4205-ITX @ Debian 11 16BG RAM, 2x 1TB SSD, 1x 1TB HDD
|
|
|
|
hermes-80 |
Dodano 09-12-2014 20:42
|
VIP
Posty: 3676
Dołączył: 21/04/2009 11:24
|
A skrypt z parametrem & ?
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
|
|
|
|
khain |
Dodano 09-12-2014 20:51
|
Power User
Posty: 335
Dołączył: 25/07/2007 17:09
|
Masz na myśli 2>&1
Próbowałem z Vixie cron z entware, ale efekt jest taki sam.
TP-LINK TL-WDR3600 @ Openwrt - 300/20Mbps
HP ProLiant DL360e Gen8 @ ESXi 7.0.1:2 x Intel Xeon CPU E5-2450L @ 1.80GHz, 160GB RAM ECC, 2x 1TB SSD
ASRock J4205-ITX @ Debian 11 16BG RAM, 2x 1TB SSD, 1x 1TB HDD
|
|
|
|
hermes-80 |
Dodano 09-12-2014 20:59
|
VIP
Posty: 3676
Dołączył: 21/04/2009 11:24
|
http://www.mblog.boo.pl/artykul-200-l...emony.html
A może jako demon za pomocą nohup?
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
|
|
|
|
khain |
Dodano 10-12-2014 08:21
|
Power User
Posty: 335
Dołączył: 25/07/2007 17:09
|
Dodanie & na końcu linii z "find" rozwiązało problem. Dziękuję za pomoc.
Połączony z 16 December 2014 15:17:35:
Jednak nie działa, teraz mam więcej czasu i dokładnie sprawdziłem (poprzednio widocznie nie ubiłem procesu). Próbowałem z nohup i z screen oraz za pomocą Vixie cron. Za każdym razem proces zostaje od razu zabity.
Skrypt wygląda tak:
find /nas/camera/ -mtime +7 -exec rm {} \ > /dev/null 2>&1 & Po wykonaniu go z cli proces jest aktywny:
[root@router root]$ /opt/etc/cameradel.sh
[root@router root]$ ps |grep camera
2521 root 10584 S find /nas/camera/ -mtime +7 -exec rm {} ;
2680 root 1592 D rm /nas/camera/20141208-0925-24-203.jpg
2682 root 1596 S grep camera
[root@router root]$ ps |grep camera
2521 root 10584 S find /nas/camera/ -mtime +7 -exec rm {} ;
2830 root 1592 R rm /nas/camera/20141208-1026-34-212.jpg
2832 root 1596 S grep camera A takie próby podjąłem:
I) zawartość skryptu: find /nas/camera/ -mtime +7 -exec rm {} \ > /dev/null 2>&1 &
1) cru a del 32 14 * * * /opt/etc/cameradel.sh &
Dec 16 14:32:01 router cron.info crond[649]: crond: USER root pid 1847 cmd /opt/etc/cameradel.sh
2) cru a del 35 14 * * * screen -dmS camera /opt/etc/cameradel.sh &
Dec 16 14:35:01 router cron.info crond[649]: crond: USER root pid 1887 cmd screen -dmS camera /opt/etc/cameradel.sh
3) cru a del 41 14 * * * nohup /opt/etc/cameradel.sh &
Dec 16 14:41:01 router cron.info crond[649]: crond: USER root pid 2012 cmd nohup /opt/etc/cameradel.sh II) zawartość skryptu: nohup find /nas/camera/ -mtime +7 -exec rm {} \ > /dev/null 2>&1 &
1) cru a del 48 14 * * * /opt/etc/cameradel.sh &
Dec 16 14:48:01 router cron.info crond[649]: crond: USER root pid 2124 cmd /opt/etc/cameradel.sh
2) cru a del 53 14 * * * screen -dmS camera /opt/etc/cameradel.sh &
Dec 16 14:53:01 router cron.info crond[649]: crond: USER root pid 2227 cmd screen -dmS camera /opt/etc/cameradel.sh
III) zawartość skryptu: screen -dmS camera find /nas/camera/ -mtime +7 -exec rm {} \ > /dev/null 2>&1 &
1) cru a del 58 14 * * * /opt/etc/cameradel.sh &
Dec 16 14:58:01 router cron.info crond[649]: crond: USER root pid 2418 cmd /opt/etc/cameradel.sh
2) cru a del 00 15 * * * nohup /opt/etc/cameradel.sh &
Dec 16 15:00:01 router cron.info crond[649]: crond: USER root pid 2472 cmd nohup /opt/etc/cameradel.sh
Proszę o dalsze podpowiedzi. Używam Tomato Firmware 1.28.0000 MIPSR2-123 K26 USB AIO
Edytowany przez khain dnia 16-12-2014 15:17
TP-LINK TL-WDR3600 @ Openwrt - 300/20Mbps
HP ProLiant DL360e Gen8 @ ESXi 7.0.1:2 x Intel Xeon CPU E5-2450L @ 1.80GHz, 160GB RAM ECC, 2x 1TB SSD
ASRock J4205-ITX @ Debian 11 16BG RAM, 2x 1TB SSD, 1x 1TB HDD
|
|
|
|
shibby |
Dodano 16-12-2014 15:35
|
SysOp
Posty: 17113
Dołączył: 15/01/2009 20:30
|
a on musi być wywoływany w powłoce bash? Nie wystarczy #!/bin/sh?
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
khain |
Dodano 16-12-2014 19:47
|
Power User
Posty: 335
Dołączył: 25/07/2007 17:09
|
Zmieniłem na powłokę shell i przetestowałem powyższe kombinacje, lecz nadal skrypt uruchomiony z crona nie usuwa żadnych plików.
Połączony z 18 December 2014 08:26:02:
Ktoś ma jakiś pomysł?
Połączony z 18 listopad 2015 09:25:37:
Niestety cru nie pozwala na wykonanie skryptu, który ma trwać przez jakiś czas. Pojedyncze polecenie (również w skrypcie) działa, ale find nie.
Dodatkowo w find nie ma przełacznika mtime
find /nas/camera/ -mtime +7 -exec rm {} \ &
find: unrecognized: -mtime
BusyBox v1.23.2 (2015-10-09 18:34:09 CEST) multi-call binary.
Findutils mam w wersji 4.5.14-1.
Trzeba jakąś paczkę doinstalować?
Używam Tomato ver. K26USB 1.28.RT-N MIPSR2 132 EN AIO na RT-N16
Edytowany przez khain dnia 18-11-2015 09:25
TP-LINK TL-WDR3600 @ Openwrt - 300/20Mbps
HP ProLiant DL360e Gen8 @ ESXi 7.0.1:2 x Intel Xeon CPU E5-2450L @ 1.80GHz, 160GB RAM ECC, 2x 1TB SSD
ASRock J4205-ITX @ Debian 11 16BG RAM, 2x 1TB SSD, 1x 1TB HDD
|
|
|
|
shibby |
Dodano 18-11-2015 11:02
|
SysOp
Posty: 17113
Dołączył: 15/01/2009 20:30
|
find jest z busyboxa i zainstalowałeś drugiego z optware. W CLI są ustawione poprawne path`e więc w pierwszej kolejności brany jest find z optware. Z cronie jak widać path są złe lub ignorowane. Zatem najprościej zamiast find podaj ścieżkę bezwzględną /opt/bin/find (albo /opt/sbin/find - nie pamiętam gdzie ta binarka się znajduje) i powinno ruszyć.
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|