Τα πάντα για το Bash...

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό malos » 14 Μαρ 2013, 22:56

Καλησπέρα.
Θέλω να σας ρωτήσω πως τελειώνει ένα σεναριάκι μετά από κάποιον χρόνο που του ορίζω εγώ.

Πιο συγκεκριμένα.
Πολλά σκριπτάκια που κλικάρουμε και εκτελούνται τελειώνουν κάποια στιγμή.
Δεν τρέχουν άλλο εκτός αν τα ξανατρέξουμε εμείς.
Τι γίνεται όμως με αυτά που περιέχουν εντολή που μπορεί να εκτελείται συνέχεια;

Μία τέτοια είναι η
έγραψε:motion


Το motion είναι γνωστο προγραμματάκι που όταν τρέχει η κάμερά σου πιάνει ότι κινηθεί μπροστά της και το βγάζει φωτογραφία, για όσους το ακούνε πρώτη φορά.

Να λοιπόν το σκριπτ μου

Κώδικας: Επιλογή όλων
#!/bin/bash
cd /home/malos/motion
motion


και το έχω βάλει να τρέχει στην εκκίνηση (Από το Σύστημα -> Προτιμήσεις -> Προγράμματα εκκίνησης και ναι gnome2 έχω ακόμα :P )

Όπως καταλάβατε όποιος πάει να κάνει login η κάμερα τον δίνει στεγνά.

Το θέμα είναι όμως ότι θέλω να κλείσει μετά από 30 δευτερόλεπτα και μη γράψει 150000 φωτογραφίες ο φάκελος
/home/malos/motion. Γιατί η κάμερα όσο βλέπει τραβάει και παραμένει ανοιχτή.

Ότι έψαξα στο ίντερνετ δεν μπόρεσα να βγάλω άκρη ώστε σε ένα σκριπτάκι να βάλω μέσα και το κλείσιμό του.

Έτσι έκανα μια μπακαλιά και κότσαρα στην εκκίνηση και δεύτερο σκριπτάκι :

Κώδικας: Επιλογή όλων
#!/bin/bash
sleep 30
killall motion


Δεν λέω...! Η δουλειά μου γίνεται. Δουλεύει το σύστημα. Αλλά δεν μου αρέσει η λύση αυτή.... με δύο σκριπτς!
Ντροπή δεν είναι γ*****; :thumbdown:
Αν βάλω πάλι τις γραμμές αυτές στο τέλος του πρώτου σκριπτ... δεν δουλεύει.

Έχετε καμιά ιδέα;
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό evolgen » 14 Μαρ 2013, 23:52

Δοκίμασε κάτι τέτοιο:
Μορφοποιημένος Κώδικας: Επιλογή όλων
#!/bin/bash
cd /home/malos/motion
motion &
sleep 30
killall motion


Ο χαρακτήρας "&" αφήνει την εντολή να εκτελείται στο παρασκήνιο και έτσι το script μπορεί να προχωρήσει και να εκτελέσει κι άλλες εντολές.
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό malos » 15 Μαρ 2013, 01:34

Δεν το πιστεύω ότι το θέμα μου ήταν μόνο ένα σύμβολο και μόνο ένα! :-o :lol:

Σ' ευχαριστώ.


Μήπως ξέρεις κι αν θέλω να ξανανοίξει η κάμερα σε μισή ωρίτσα για 30 δευτερολεπτα πάλι
και να ξανακλείσει.... πως γίνεται; :oops:
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό evolgen » 15 Μαρ 2013, 02:45

Δεν κάνει τίποτα! :) Όσο για το ερώτημά σου, μπορεί να γίνει και με κώδικα αυτό που θέλεις, αλλά δε θα είναι τόσο όμορφο. Γίνεται καλύτερα με τη χρήση του crontab. Δες εδώ για περισσότερες πληροφορίες.
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό malos » 16 Μαρ 2013, 02:28

Ευχαριστώ και γι αυτό.

Να σου πω όμως και κάτι άλλο. (Τώρα που βρήκαμε παπά :) )

Το motion γράφει τις φωτογραφίες σε ένα φάκελο. Δεν τις γράφει αμέσως όμως,
καθώς κινείσαι μπροστά από την κάμερα. Αλλά σε λίγα δευτερόπτα αργότερα.
Εγώ θέλω με το γράφεται το πρώτο αρχείο jpg ( ο φάκελος θα είναι άδειος αρχικά )
να μου κάνει ένα alert.
Βρήκα τον τρόπο για αναγνώριση ύπαρξης αρχείου με το

if [ -e .... κλπ... ].

Αλλά πως μπορώ να το κάνω να περιμένει το σκριπτ μέχρις ότου ικανοποιηθεί η συνθήκη αυτή και να μου κάνει αμέσως το alert;
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό evolgen » 16 Μαρ 2013, 03:55

Κάτι σαν αυτό πρέπει να ταιριάζει στην περίπτωσή σου.
Μορφοποιημένος Κώδικας: Επιλογή όλων
while true
do
if[ -e ...]
then
...
break
else
sleep 10
fi
done

Αν δεν υπάρχει το αρχείο, τότε το script περιμένει 10 δευτερόλεπτα και ξαναδοκιμάζει. Αν υπάρχει, κάνει ό,τι χρειάζεται και με το "break" βγαίνει από το endless loop (while) και συνεχίζεται το script στα επόμενα βήματα, αν υπάρχουν.
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό malos » 18 Μαρ 2013, 01:18

Να σαι καλά ρε παίδαρε!
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό medigeek » 18 Μαρ 2013, 09:06

Εναλλακτικό του motion είναι το fswebcam:
Κώδικας: Επιλογή όλων
fswebcam -r 640x480 --jpeg 85 -D 1 shot.jpg


http://askubuntu.com/questions/102755/h ... web-camera
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό lepidas » 22 Μαρ 2013, 18:13

έχω ένα φάκελο με περίπου 900 αρχεία filename.jpg.1 εώς filename.jpg.900
πως θα ήταν ένα σκριπτάκι που να τα έκανε
1filename.jpg
2filename.jpg
3filename.jpg
κλπ εως 900filename.jpg
δηλαδη να παρει το .### και να το κολλησει πριν τη λεξη filename (###filename.jpg)
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό simosx » 22 Μαρ 2013, 20:07

lepidas έγραψε:έχω ένα φάκελο με περίπου 900 αρχεία filename.jpg.1 εώς filename.jpg.900
πως θα ήταν ένα σκριπτάκι που να τα έκανε
1filename.jpg
2filename.jpg
3filename.jpg
κλπ εως 900filename.jpg
δηλαδη να παρει το .### και να το κολλησει πριν τη λεξη filename (###filename.jpg)


Κώδικας: Επιλογή όλων
find . -name "filename.jpg.*" | awk -F. '{ printf "mv filename.jpg.%s %04d-filename.jpg\n", $4, $4 }'


Για κάθε όνομα αρχείου της παραπάνω μορφής, σπάει το όνομα βάσει της τελείας οπότε το $4 είναι το αριθμός, και τυπώνει την εντολή μετονομασίας όπου μετονομάζει τα ονόματα αρχείων στη μορφή %04d-filename.jpg. Εδώ, το %04d είναι μορφή για δεκαδικό (d), με τέσσερα ψηφία, όπου γεμίζει με μηδενικά ώστε το σύνολο να είναι 4 ψηφία. Αυτό είναι καλό ώστε όλα τα αρχεία να έχουν το ίδιο μέγεθος στο όνομα.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι