Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

Γίνεται να χρησιμοποιήσω το HERE document σε συγκεκριμένο μέρος ενός αρχείου;

Αυτό που θέλω να κάνω είναι να βάλω μέσα στο http section του nginx.conf μία συγκεκριμένη εγγραφή τριών γραμμών.

 

 

>
user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
   worker_connections  1024;
   # multi_accept on;
}

http {
   include       /etc/nginx/mime.types;

   access_log	/var/log/nginx/access.log;

   sendfile        on;
   #tcp_nopush     on;

   #keepalive_timeout  0;
   keepalive_timeout  65;
   tcp_nodelay        on;

   gzip  on;
   gzip_disable "MSIE [1-6]\.(?!.*SV1)";

   include /etc/nginx/conf.d/*.conf;
   include /etc/nginx/sites-enabled/*;
}

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Πριν καιρό είχα φτιάξει ένα bash script για update του urlfilter.ini για adblock του Opera. Το πρόβλημα ήταν ότι αν είχε κάνει και δικά σου block, με το update γινόντουσαν overide, οπότε είπα να το κάνω update ώστε να κρατάει και τις custom ρυθμίσεις. Επίσης τώρα το υλοποίησα με Ruby, όποιος ενδιαφέρετε το βρίσκει στο github ή ακριβός από κάτω.

 

>#!/usr/bin/env ruby
require 'net/http'
require 'uri'
require 'etc'

begin
 file = File.open("#{Etc.getpwuid.dir}/.opera/urlfilter.ini", 'r')
 puts "Downloading urlfilter.ini from remote server..."
 remote_exclude = (Net::HTTP.get URI.parse('http://www.fanboy.co.nz/adblock/opera/urlfilter.ini')).split("[exclude]\n")[1].gsub("\"","").gsub(/^;.+/,"").downcase.split("\n")
 urlfilter =  file.read.split("[exclude]\n")
 local_exclude = urlfilter[1].gsub("\"","").gsub(/\=UUID.+/, "").downcase.split("\n")
 new_exclude =  "#{urlfilter[0]}[exclude]\n#{(local_exclude+remote_exclude).uniq.join("\n")}"
rescue Errno::ENOENT
  puts "Downloading urlfilter.ini from remote server..."
 new_exclude = Net::HTTP.get URI.parse('http://www.fanboy.co.nz/adblock/opera/urlfilter.ini')
rescue
 puts "#ERROR - Something is going wrong, maybe remote server is down."
 exit 0
ensure
 file.close unless file.nil?
end
begin
 file1 = File.open("#{Etc.getpwuid.dir}/.opera/urlfilter.ini", 'w')
 file1.write(new_exclude)
rescue Errno::EACCES
 puts "#ERROR - Maybe you don't have write premissions."
 exit 0
ensure
 file1.close unless file1.nil?
end
puts "Done!"

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Πριν καιρό είχα φτιάξει ένα bash script για update του urlfilter.ini για adblock του Opera. Το πρόβλημα ήταν ότι αν είχε κάνει και δικά σου block, με το update γινόντουσαν overide, οπότε είπα να το κάνω update ώστε να κρατάει και τις custom ρυθμίσεις.

Πολυ ωραίο! To δοκίμασα και φαίνεται να δουλεύει μια χαρά!

Μερικές πιθανές βελτιώσεις:

1) να είναι παράμετρος το αν θα γίνει update το urlfilter.ini για τον Opera (.opera) ή τον Opera-next (.opera.next)

2) να γίνεται έλεγχος αν τρέχει process του opera και να ειδοποιείται ο χρήστης (= να μην γίνεται update αν ο Opera είναι ανοιχτός - ή τουλάχιστο να υπάρχει warning στον χρήστη ότι συνιστάται να τον έχει κλειστό)

3) να δίνεται η επιλογή να κατέβει και το "fanboy-adblocklist-elements-v4.css" με πχ default φακελο εγκαταστασης τον .opera(-next)/styles ή τον /usr/share/opera(-next)/styles/ ή αν υπάρχει ήδη ( opera:config#UserPrefs|LocalCSSFile , δηλαδή στο operaprefs.ini: Local CSS File= [pathToCustomCSS] ) τότε να το ενημερώνει σε εκείνο το path.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 4 μήνες μετά...

υπάρχουν κάτω από το /home χιλιάδες folders,subfolders κτλ τα οποία την τελευταία εβδομάδα τα έβαλα σε μια τάξη

ανακάλυψα ότι τα δικαιώματα είναι λίγο γτπ, δλδ πολλά έχουν 777 (μάλλον ότι μπήκε από windows) και θέλω να δώσω σε όλα τα directories 755 και στα αρχεία 644, αλλά υπάρχει πλέον και ένας φάκελος που έχει windows software στον οποίο δεν ξέρω τι δικαιώματα θέλουν τα exe

 

η εύκολη λύση από τι είδα είναι

chmod -Rc 755 /home/user/

αλλά αυτό θα μου κάνει και τα αρχεία 755 και δεν θέλω, 755 θέλω μόνο στα folders,subfolders

α και rw παντού

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

υπάρχουν κάτω από το /home χιλιάδες folders,subfolders κτλ τα οποία την τελευταία εβδομάδα τα έβαλα σε μια τάξη

ανακάλυψα ότι τα δικαιώματα είναι λίγο γτπ, δλδ πολλά έχουν 777 (μάλλον ότι μπήκε από windows) και θέλω να δώσω σε όλα τα directories 755 και στα αρχεία 644, αλλά υπάρχει πλέον και ένας φάκελος που έχει windows software στον οποίο δεν ξέρω τι δικαιώματα θέλουν τα exe

 

η εύκολη λύση από τι είδα είναι

chmod -Rc 755 /home/user/

αλλά αυτό θα μου κάνει και τα αρχεία 755 και δεν θέλω, 755 θέλω μόνο στα folders,subfolders

α και rw παντού

 

>
find /home/user -type d -exec chmod 755 {} \;
find /home/user -type f -exec chmod 644 {} \;

 

Κάτι τέτοιο σε βολεύει ?

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

το λέει το nickname :mrgreen:

 

many thanks

 

για την ιστορία, πως μπορούσα να συνδυάσω και την regex η prune για να έβγαζα (exclude) ένα directory με όλα τα subfolders/files από κάτω του ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

το λέει το nickname :mrgreen:

 

many thanks

 

για την ιστορία, πως μπορούσα να συνδυάσω και την regex η prune για να έβγαζα (exclude) ένα directory με όλα τα subfolders/files από κάτω του ?

 

Για να ενώσεις ξεχωριστές επιλογές μπορείς να χρησιμοποιήσεις την παράμετρο -o (OR).

 

>
find /home/user -path "/home/user/mitsos" -prune -o -type d -exec κτλ

Εδώ έχουμε επιλέξει δύο πράγματα. Το ένα είναι το "-path -prune" το οποίο λέει να μην μπεις μέσα στο τάδε path και το άλλο είναι το "-type d -exec" το οποίο κάνει το ίδιο με πριν. Το OR λειτουργεί με "short circuit" οπότε παίρνει μία μία τις συνθήκες και εκτελεί μόνο την 1η που ισχύει. Άρα όταν το path είναι το mitsos θα εκτελεστεί μόνο το prune οπότε δεν θα γίνει τίποτα. Όταν η πρώτη συνθήκη δεν ισχύει δηλαδή δεν έχουμε τον κατάλογο mitsos και υποκαταλόγους του, τότε θα ελέγξει την 2η συνθήκη που είναι να ψάξει για καταλόγους και έτσι το τελικό αποτέλεσμα είναι να αγνοηθούν οι υποκατάλογοι του mitsos.

 

>
find /home/user ! -path "/home/user/mitsos/*" -type d -exec κτλ

Εγώ συνήθως το δουλεύω με μία action όπως φαίνεται παραπάνω. Η διαφορά είναι ότι επειδή δεν έχουμε την prune πρέπει να μπει ο αστερίσκος ώστε να γίνει match σε όλα τα περιεχόμενα του mitsos.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>find /home/user -type d -exec chmod 755 '{}' +;

Νομίζω ότι η παραπάνω μορφή είναι πιο γρήγορη, ειδικά αν έχεις πολλά αρχεία. Από το man find

 

-exec command {} +

This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command. The command is executed in the starting directory.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>find /home/user -type d -exec chmod 755 '{}' +;

Νομίζω ότι η παραπάνω μορφή είναι πιο γρήγορη, ειδικά αν έχεις πολλά αρχεία. Από το man find

 

Απείρως πιο γρήγορη θα είναι αυτή η μορφή επειδή η δική μου εκτελεί την chmod για κάθε αρχείο ή κατάλογο οπότε φαντάσου τι overhead έχει. Απλά συνήθισα να την τρέχω έτσι :P

 

Το μόνο μειονέκτημα που βλέπω στην μορφή με το + είναι ότι αν δουλεύει σαν την xargs μπορεί να μην φτάσει το buffer αν ο αριθμός των ορισμάτων είναι πολύ μεγάλος εκτός αν το find φροντίζει για αυτό και το κόβει λίγο πριν το όριο σε πολλαπλές γραμμές. Γενικά πάντως η μορφή που πρότεινες είναι πολύ καλύτερη.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ευχαριστώ και τους δυο :-)

 

έκανα ακριβώς αυτό που ήθελα, η αλήθεια είναι όταν έτρεξα την εντολή για τα files πρέπει να έκατσε σε full-load κάνα 10λεπτό κοντά, έσκουζε αλλά μονίμως στο 0% είναι , δεν θα πάθει τπτ

 

*έβαλα και -c για να δω τι αλλάζει και δεν προλάβαινα να δω :lol:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τρέχω αυτήν την εντολή (dmesg | grep -i sata | grep 'link up') για να δω τι σκληρούς δέχεται το laptop και μου βγάζει το εξής αποτέλεσμα :

 

 

[ 3.857021] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

[ 4.167021] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)

 

Τι συμπέρασμα να βγάλω από αυτό;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τρέχω αυτήν την εντολή (dmesg | grep -i sata | grep 'link up') για να δω τι σκληρούς δέχεται το laptop και μου βγάζει το εξής αποτέλεσμα :

 

 

[ 3.857021] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

[ 4.167021] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)

 

Τι συμπέρασμα να βγάλω από αυτό;

 

Ότι έχεις δύο συσκευές με την μία να είναι SATA2 και την άλλη SATA1. Το υποσύστημα είναι ata όπως βλέπεις οπότε αν κάνεις grep για ata θα δεις και άλλες πληροφορίες όπως τι συσκευές είναι αυτές (πχ ένας δίσκος και ένα sata dvd), τι firmware έχουν, κτλ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οπότε μάλλον το ένα device είναι ο σκληρός και το άλλο είναι το dvd άν κατάλαβα καλά έτσι;

 

ναι, το 113 είναι το dvd και το αλλο ο σκληρος

 

δες το μονος σου

 

>
$ dmesg |grep ata2

 

>
$ dmesg |grep ata1

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...