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

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

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

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

Δημοσίευσηαπό xqtr » 17 Σεπ 2009, 22:15

Δεν χρειαζεται απαραιτητα script, μπορεις να το κανεις και με την εντολη find, δες αυτο...

http://content.hccfl.edu/pollock/Unix/FindCmd.htm

και φυσικα τα man pages.
O χειμώνας έρχεται...
Γνώσεις ⇛ Linux: Μέτριο │ Προγραμματισμός: Ναι (Delphi/Lazarus) │ Αγγλικά: Καλά
Λειτουργικό : Ubuntu 14.04 σε Acer Aspire 5520
Προδιαγραφές ⇛ AMD Turion 1.8GHz │ 1GB │ ATI X700 │ Broadcom BCM4318 │LCD 15.4"
Άβαταρ μέλους
xqtr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 508
Εγγραφή: 05 Φεβ 2009, 19:00
Εκτύπωση

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

Δημοσίευσηαπό da_perama1 » 13 Οκτ 2009, 19:55

Θέλω συχνά όταν ανοίγω το τερματικό να πηγαίνω σε ένα συγκεκριμμένο φάκελο. Για να μην γράφω κάθε φορά cd ...................... σκέφτηκα να φτιάξω και να αποθηκεύσω ένα script. Διάβασα τα σχετικά εγχειρίδια και έφτιαξα αυτό το εκπληκτικό.
Κώδικας: Επιλογή όλων
#!/bin/bash
echo Προσπαθώ
cd /media/home_per/χχχχχ/programming/python/programma


Το καλώ "Προσπαθεί" δεν βγάζει μήνυμα λάθους αλλά και δεν κάνει τίποτα. :thumbdown:
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

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

Δημοσίευσηαπό c7p » 13 Οκτ 2009, 20:53

Δοκίμασε με
Κώδικας: Επιλογή όλων
echo 'Προσπαθώ'
,
για να τρέχεις τα προγραμματάκια που φτιάχνεις στο /media/home_per/χχχχχ/programming/python/programma, μπορείς να προσθέσεις αυτόν τον κατάλογο στην μεταβλητή $PATH , έτσι ώστε σε όποιον κατάλογο και να μπορείς να τρέξεις εκτελέσιμα αρχεία αυτού του καταλόγου , αυτό γίνεται απλά, δώσε στο τερματικό
Κώδικας: Επιλογή όλων
PATH=$PATH:/media/home_per/χχχχχ/programming/python/programma

επίσης για να μεταβαίνεις σε αυτόν τον κατάλογο μπορείς να χρησιμοποιήσεις alias αντί για scriptακι (αν ενδιαφέρεσαι πες μου )
Άβαταρ μέλους
c7p
powerTUX
powerTUX
 
Δημοσιεύσεις: 1849
Εγγραφή: 30 Μάιος 2009, 16:09
Τοποθεσία: Κατερίνη
Εκτύπωση

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

Δημοσίευσηαπό da_perama1 » 13 Οκτ 2009, 21:16

To echo δουλεύει και το έβαλα για να σιγουρέψω ότι το script τρέχει.
Δεν θέλω να το βάλω στο path.
alias ???
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

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

Δημοσίευσηαπό c7p » 13 Οκτ 2009, 22:08

Δες τι είναι το alias και πως μπορείς να το χρησιμοποιήσεις http://breezer.pblogs.gr/2009/06/kante-tis-entoles-toy-linux-ligo-pio-filikes.html, (ότι ερώτηση έχεις εδώ είμαι)
Άβαταρ μέλους
c7p
powerTUX
powerTUX
 
Δημοσιεύσεις: 1849
Εγγραφή: 30 Μάιος 2009, 16:09
Τοποθεσία: Κατερίνη
Εκτύπωση

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

Δημοσίευσηαπό da_perama1 » 14 Οκτ 2009, 08:50

Ευχαριστώ cp7 η εντολή alias είναι αυτό που χρειάζεται στην συγκεκριμμένη περίπτωση. :thumbup: Πάντως μου έμεινε η απορία γιατί δεν δουλεύει το script. :thumbdown:
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

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

Δημοσίευσηαπό ftso » 14 Οκτ 2009, 10:26

da_perama1 έγραψε:Πάντως μου έμεινε η απορία γιατί δεν δουλεύει το script. :thumbdown:

http://tldp.org/LDP/Bash-Beginners-Guid ... 01_03.html

έγραψε:1.3.1. General

Bash determines the type of program that is to be executed. Normal programs are system commands that exist in compiled form on your system. When such a program is executed, a new process is created because Bash makes an exact copy of itself. This child process has the same environment as its parent, only the process ID number is different. This procedure is called forking.
...
...
...
1.3.3. Executing programs from a script

When the program being executed is a shell script, bash will create a new bash process using a fork. This subshell reads the lines from the shell script one line at a time. Commands on each line are read, interpreted and executed as if they would have come directly from the keyboard.

While the subshell processes each line of the script, the parent shell waits for its child process to finish. When there are no more lines in the shell script to read, the subshell terminates. The parent shell awakes and displays a new prompt.
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

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

Δημοσίευσηαπό da_perama1 » 15 Οκτ 2009, 18:35

Ευχαριστώ πολύ ftso για τη βοήθεια, κατάλαβα τι γίνεται. Τελικά το bash έχει πολύ μεγαλύτερο βάθος από ότι νόμιζα και δεν προσφέρεται για επιφανειακή αντιμετώπιση όπως η δική μου. Το έβαλα στα must για μια πιο σοβαρή αντιμετώπιση όταν βρω (;) τον απαραίτητο χρόνο.
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

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

Δημοσίευσηαπό sokoban4ever » 17 Ιαν 2010, 23:31

ας πούμε ότι έχουμε πολλούς φακέλους (5 10 ακόμα και εκαντοτάδες )
για παράδειγμα
βιντεάκια_τάδε βιντεάκια_τέτοια βιντεάκια_απο_κείνα
και σε κάθε φάκελο (ακόμα και άλλους υποφάκελους και αρχεία..)
έχουμε ένα σωρό αρχεία (multipart) rar
πχ
blablabla.part1.rar
blablabla.part2.rar
blablabla.part3.rar

και ούτο κάθε εξής
Αυτά έχουν ένα κοινό χαρακτηριστικό (όσο αναφορά το ονομασία τους) έχουν όλα από ένα αρχείο part1.rar ή part01.rar ή part001.rar (κλπ)
χρειάστηκα να αποσυμπιέσω πολλά τέτοια αρχεία (συνολικά όλα τα rar μαζι 256 και τα part1.rar 51) σε remote server και που δεν μου επιτρεπόνταν να κάνω X11 forwarding (εφαρμογές με GUI μέσω ssh )

λοιπόν πήγα στο κατάλογο που τα περιέχε όλα και έκανα
Κώδικας: Επιλογή όλων
find -type f -regextype posix-egrep -regex "^.*[^1]1.rar$" -execdir unrar e -kb {} \;

to regex βρίσκει αυτά που αρχίσουν τελειώνουν με 1.rar αλλά αποφεύγει τα 11.rar (μας αρκούν τα ΟΤΙΔΗΠΟΤΕ001.rar ΟΤΙΔΗΠΟΤΕ01.rar και ΟΤΙΔΗΠΟΤΕ1.rar )
μέσα σε 20 περίπου δευτερόλεπτα είχε τελειώσει η αποσυμπίεση των 256 rar αρχείων

έπειτα για να τα μαζέψω όλα στον σε ένα κατάλογο έκανα
Κώδικας: Επιλογή όλων
find -type f -cmin -2 -not -iname "*.rar" -execdir mv {} ~/Desktop/MyKatalogos/ \;


το cmin -2 χρειάστηκε για να βρει αρχεία που μόλις μέχρι 2 λεπτά είχε αλλάξει το timestamp τους (μετά από 5 λεπτά πχ θα έβαζα 7 λεπτά )
γιατι υπήρχαν και άλλα που δεν ήταν rar (όρισμα -not -iname "*.rar" ) αλλά είχαν φτιαχτεί (το timestamp ή status ) παλιότερα.
άλλα ήταν pdf άλλα html αλλά tex και ps και άλλα ... (με άλλες καταλύξεις ) οπότε προτιμήσα όλα τα αρχεία που δεν ήταν rar και είχαν δημιουργηθεί
μόλις 2 λεπτά πριν .

τα παραπάνω δουλεύουν και για rar αρχεία με rar.001 rar.002 κλπ καταλήξεις
φτάνει μόνο
την πρώτη εντολή να την κάνουμε
Κώδικας: Επιλογή όλων
find -type f -regextype posix-egrep -regex "^.*1$" -execdir unrar e -kb {} \;

και την δεύτερη
Κώδικας: Επιλογή όλων
find -type f -cmin -2 -not -iname "*.rar*" -execdir mv {} ~/Desktop/MyKatalogos/ \;


Αυτά :)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

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

Δημοσίευσηαπό sokoban4ever » 07 Φεβ 2010, 09:50

cpu Monitor
από padavrexei + me
viewtopic.php?f=4&t=8829&p=103822

άμα κολλάει ξαφνικά το pc και δεν βρίσκουμε ίχνη ποια διεργασία μας "την 'έκανε "
μπορούμε να τρέξουμε το cpuMon.sh σε ένα άλλο tty
αυτό κρατάει logs για της πρώτες 10 διεργασίες που καταναλώνουν την CPU μας
στο αρχείο /home/user/cpuPeak.txt
οπου user to username μας
για να το τρέξουμε
κάνουμε ctrl + alt + f1
και κάνουμε login στο tty1
to κάνουμε εκτελέσιμο
Κώδικας: Επιλογή όλων
chmod +x cpuMon.sh

έπειτα τρέχουμε
Κώδικας: Επιλογή όλων
watch -n.6 ./cpuMon.sh

με .6 σημαίνει log κάθε 600 milliseconds
μπορούμε να δώσουμε και
Κώδικας: Επιλογή όλων
watch -n 1 ./cpuMon.sh

για ολόκληρα δευτερόλεπτα
και πάει λέγωντας ..

και το bash script το οποίό σώζουμε αν θέλουμε σε cpuMon.sh
Κώδικας: Επιλογή όλων
#!/bin/bash
#
# cpuMon.sh
# Monitors CPU load and logs it if it exceeds the threshold
# Usage : watch ./cpuMon.sh
# also with parameter -n in watch
# Example: watch -n.6 ./cpuMon.sh
# every 600 miliseconds

threshold="90.0"

dFile="/home/$USER/cpuPeak.txt"


# Get current total-CPU-load (by adding all processes's %CPU)
cpuLoad=`ps aux --no-headers --sort=-%cpu | awk '{cpuload += $3} END {print cpuload}'`

#Change : Added support for Comparison of Floating point numbers ( because 9.1 is smaller than 80.0 ) but bash does not "see" that :-)
#If cpuLoad is greater than the threshold , ReturnStatus will be 1

echo $cpuLoad |awk '{ if ( $1 > '$threshold') {exit 1}};'
ReturnStatus=$?

#if awk returns 1 means that cpuLoad has become greater than our thresold so we can log
# If the sum is greater than the threshold, log top-10 processes
if [ "$ReturnStatus" -eq 1 ]; then
echo =====[ CPU load = "$cpuLoad" ]===== >> "$dFile"
date >> "$dFile"
ps aux --no-headers --sort=-%cpu | head -n10 >> "$dFile"
echo >> "$dFile"
fi

exit

αν το threshold είναι πολυ ψηλό αλλάξτε κατα βούληση εγώ το βάζω στο 80
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

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

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