Toplamaya ve uygulamaya değer 7 kabuk komut dosyası örneğini paylaşın

Genel Bakış

Yüzlerce kez okumak bir kendi kendine yeterlilik meselesidir, kabuk senaryolar da öyledir.Daha fazla örnek okuduğunuz sürece, doğal olarak nasıl yazılacağını bileceksiniz. Burada esas olarak 20'den fazla örnek var, çünkü içerik görece büyük, bu yüzden girişi birkaç kez böldüm. Aşağıdaki örnek, bunun nasıl uygulanacağını düşünmek ve ardından uygulama şekline bakmak en iyisidir: Cevap standart değildir ve iyileştirilebilecek bazı alanlar vardır.

1. Dosya tarihe göre adlandırılır ve disk kullanımına yazılır

#! / bin / bash ################################################ # Dosya, tarihe göre adlandırılır ve disk kullanımına yazılır ################################################ d = `tarih +% Y-% m-% d` ## Tarihi alın günlük dosyası = $ d.log ## günlük dosyası adını tanımlayın df -h > $ logfile ## Disk kullanımını dosyaya yaz

2. Günlük dosyasındaki her IP'nin trafiğini sayın

1) Yeni bir günlük dosyası oluşturun, dosya adı 1.txt'dir.

123-sdfjukhesdjkfghjkldf 456 -jsdigkhndjfgjd 789-dsfjkdhfjkhsdjkfhsjk 123 - sdfhfjkhsjklaj 789 -jfgduhdjkfghjkdf 123 -dhsfgjkhsdjkghjkdf

2) Komut Dosyası 2.sh

#! / bin / bash ################################################ ## Dosya IP'sini Al | Sırala | Yinelenenleri kaldır ve her IP'nin yinelenen sayısını say | Sırala ################################################ awk '{baskı $ 1}' 1.txt | sırala -n | uniq -c | sırala -n

3. Linux sistemindeki tüm işlemlerin kapladığı bellek toplamını hesaplayın

#! / bin / bash ################################################ # Linux sistemindeki tüm işlemlerin kapladığı bellek toplamını hesaplayın ################################################ toplam = 0 # Her işlem tarafından kullanılan belleği almak ve bunları sırayla toplamak için for döngüsünü kullanma `ps aux | awk '{print $ 6}' | grep -v'RSS''de mem için yapmak toplam = $ ## Hafıza toplamı bitti echo "kullanıcılı mem $ sum" ## Çıktı sonucu

4. Uzak makinenin hayatta kalmasını izleyin ve bir arıza süresi uyarısı bulun

#! / bin / bash ################################################ # Uzak makinenin hayatta kalmasını izleyin, bir arıza süresi uyarısı bulun ################################################ # Uzak makine IP'sinin 114.114.114.114 olduğunu varsayarsak ip = 114.114.114.114 d = `tarih +% Y-% m-% d` ## Tarihi alın # while döngü döngü izleme, "while:" sonsuz bir döngüdür süre: yapmak # Ping komutunu kullanarak, hayatta kalma konusunda karar vermek için paket kayıp oranının değerini temel alın n = `ping -c2 $ ip 2 > / dev / null | grep'reded '| awk -F'reived, |%' '{print $ 2}' ' n1 = `echo $ n | sed'ler /// g'` # Değerin boş olup olmadığına karar verin ise sonra echo "hatası" çıkış # Değerin sayı olup olmadığına karar verme elif sonra echo "hatası" çıkış # Paket kaybı oranı% 20'den az değilse, bir alarm gönderin elif sonra # Burada ayrıca giden posta uyarısı da yapabilirsiniz echo "daha fazla kayıp" Başka echo "$ d: $ ip tamam" > ip_monitor.log fi # İzleme aralığı 30 saniyedir uyku 30 bitti

5. Belirtilen dizindeki dosya adını toplu olarak değiştirin, dosya adını paketleyin ve geri yükleyin

#! / bin / bash ################################################ # Toplu olarak belirtilen dizindeki dosya adını değiştirin, dosya adını paketleyin ve geri yükleyin ################################################ # Hedef klasörde belirtilen türdeki tüm dosyaların dosya adlarını bulun ve bunları belirtilen dosyaya kaydedin find / home / scripts -type f -name "* .txt" > /home/scripts/txt.list # Tüm dosyaları for döngüsü aracılığıyla aktarın ve sırayla yeniden adlandırın "cat / home / scripts / txt.list" içindeki f için yapmak mv $ f $ f.bak bitti # Dosyaları paketlemek için dizin olarak zaman adlı bir dizin tanımlayın d = `tarih +% F` mkdir / home / betikler / txt_ $ d # Yeniden adlandırılmış tüm dosyaları sırayla paket dosyasının dizinine kopyalayın "cat / home / scripts / txt.list" içindeki f için yapmak cp $ f.bak / home / scripts / txt_ $ d bitti # Paketleme için belirtilen dizini girin cd / home / komut dosyaları tar -czvf txt.tar.gz txt_ $ d #Restore dosya adı "cat / home / scripts / txt.list" içindeki f için yapmak mv $ f.bak $ f bitti

Not: Paketlenmiş dosyanın fazladan bir dosya adı katmanına sahip olmasına rağmen, dosya adını geri yüklemek çok kolaydır.

6. Makinenin 80 numaralı bağlantı noktasının dinleyip dinlemediğini belirleyin, yoksa hizmeti yeniden başlatın ve bir e-posta uyarısı gönderin

#! / bin / bash ################################################ ######### # Makinenin 80 numaralı bağlantı noktasının dinleyip dinlemediğini değerlendirin, yoksa hizmeti yeniden başlatın ve bir e-posta uyarısı gönderin ################################################ ######### # Makinenin 80 numaralı bağlantı noktasının dinleyip dinlemediğini belirleyin ve karşılık gelen eylemleri gerçekleştirin (karar koşulu olarak komut satırı kullanıldığında, komut satırı if koşulunu karşılamak için doğru şekilde yürütülür ve karar için kullanılan komut satırının geri alıntı eklemesine gerek yoktur) netstat -ntpl | grep -q ': 80' ise sonra çıkış Başka # Burada ayrıca giden posta uyarısı da yapabilirsiniz echo "hatası" #service nginx yeniden başlatma fi # Başlatmanın başarılı olup olmadığına karar verilirse, değilse, hata mesajı e-posta ile uyarılır n = `pgrep -l httpd | wc -l` # Tüm httpd işlemlerinin pidlerini listeleyin ise sonra /tmp/nginx_start.err'e dokunun / usr / local / nginx / sbin / nginx start 2 > /tmp/nginx_start.err fi #if -s seçeneği, dosya boyutu 0 olmadığında doğru sonra # Burada ayrıca giden posta uyarısı da yapabilirsiniz echo "hatası" fi

Not: Sürekli izleme, görev planını veya döngü sırasında kullanabilir

7. Birden çok konumdaki veritabanlarını yedekleyin (yerel olarak bir hafta süreyle tutulur, bir ay süreyle uzaktan tutulur)

#! / bin / bash ################################################ ######### # Çoklu yedekleme veritabanları (bir hafta süreyle yerel saklama, bir ay süreyle uzaktan saklama) #tarih +% Y # Yıl (dört basamaklı) ör. 2018 #tarih +% y # Yılın son iki basamağı, örneğin: 18 #tarih +% m # ay örneğin: 07 #date +% d # gün örneğin: 10 #tarih +% H # 24 saat ör. 11 #date +% M # puan, örneğin: 37 #date +% S # saniye örneğin: 24 #tarih +% w # Hafta (0-6) 0, Pazar anlamına gelir #date +% F # Tamamlanma tarihi =% Y-% m-% d #tarih +% T # =% H:% M:% S saat ör .: 10:46:45 ################################################ ######### d1 = tarih +% w d2 = tarih +% y-% m-d bakdir = '/ yedekleme' r_bakdir = 'Uzak yedekleme IP adresi': 'Uzak yedekleme dizini' # ssh üzerinden senkronizasyon rs_bakdir = 'Uzak yedeklemenin IP adresi' :: 'modül adı' # Servis yoluyla senkronize et # Sonraki komutta yer alan tüm doğru çıktılar doğru günlük dizinine kaydedilir ve tüm hata çıktıları hata günlüğü dizinine kaydedilir. yürütme 1 > 'Doğru günlüğün dizini' 2 > 'Hata günlüğü dizini' echo "mysql yedeklemesi" tarih + "% F% T" 'de başlar # Yerel makineye yedeklenen dosyalar haftadan sonra adlandırılır ve süre 7 gündür. 7 gün sonra, aynı ada sahip eski dosyanın üzerine yeni dosya yazılacaktır mysqldump -u'nun belirtilen kullanıcısı '-p'nin belirtilen şifresi' belirtilen veritabanı ' > $ bakdir / $ d1.sql # Uzak makineye yedeklenen dosyalar tarihe göre adlandırılır ve süre 31 gündür. 31 gün sonra, aynı ada sahip eski dosyanın üzerine yeni dosya yazılır rsync -az $ bakdir / $ d1.sql $ r_bakdir / $ d2.sql echo "mysql yedekleme" tarihte + "% F% T" "'de bitiyor

Bunlar aslında genellikle yazılan kabuk komut dosyalarının parçalarıdır. Asıl amaç, uygulama şeklini hatırlamaktır.Mantık yeterlidir ve bir dahaki sefere nasıl yazacağınızı bileceksiniz.

Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~

Bu makalenin size yardımcı olduğunu düşünüyorsanız, lütfen bir ödül verin ~

Yazın serinlik için sürükleniyor
önceki
Ağustos 2019'daki küresel veritabanı popülerlik sıralaması - oracle ve mysql belirgin büyüme trendlerine sahip
Sonraki
Spurs alternatif rekonstrüksiyon, 4 ana konu başlatıldı, 2'si tamamlandı, Bobo son 2'yi çözüyor
Langxiang Huahai çiçek açmış durumda (Fotoğraflar)
Pazar İşlemi 5 Ağustos'ta Hangzhou'da toplam 210 set ticari ev satıldı ve 24.777 set konut envanteri satıldı
DBA'ya önerilen, toplamaya değer PostgreSQL kitaplarının listesi
İşlem yığınını tek tıklamayla görüntülemek için pratik bir pstack komut dosyası paylaşın
patlama! Luneng, Evergrande tarafından yok edildi! Constant Dalian 3 dakikada iki gol attı, Wang Dalei çok çaresizdi
Shenhua Zhuoer'ın ortaya çıkmasından sonraki çatışmanın nedeni ... Önce Li Tie insanlara vurdu ve Sun Shilin kurban mı oldu?
Başka kim! Jin Xinyu, üst üste 5 maç attı ve son turda hat trick ile iki gol attı.
Çin Premier Ligi'nin en iyi takımları vurulabilir! Rakip için harika bir haber, takım üç maçlık bir mağlubiyet serisi ile karşılaşabilir
Çin (Qinghai) Tibet Halı Uluslararası Fuarı ve Uluslararası Ekoloji Endüstrisi Fuarı açıldı
İyi bir ruh hali içinde, SIPG oyuncuları yeni stadyumu ziyaret ediyor, Yan Junling stadyum modelini gözlemliyor ve Lao Cai spot ışığı çalıyor
Ayrıntılı özet komut dosyası paylaşımı - centos7 tek tıklamayla optimizasyon ayarları, toplamaya değer
To Top