Time of Update: 2017-01-18
在Linux中有很多方法逐行讀取一個檔案的方法,其中最常用的就是下面的指令碼裡的方法,而且是效率最高,使用最多的方法。為了給大家一個直觀的感受,我們將通過產生一個大的檔案的方式來檢驗各種方法的執行效率。方法1:while迴圈中執行效率最高,最常用的方法。複製代碼 代碼如下:function while_read_LINE_bottm(){While read LINEdoecho $LINEdone <
Time of Update: 2017-01-18
客戶的要求,不想讓外國的ip來訪問伺服器,本來要讓機房在上端路由解決,但是那些人不鳥你!!!~~~~這樣的話,只能自己用iptables解決了~~~~~~~~~關於 ip庫 大家可以去 http://www.ipdeny.com/ipblocks/ 下載, 這裡有各個國家的~~~ 複製代碼 代碼如下:#下載ip庫#wget
Time of Update: 2017-01-18
建立隨機數的方法:複製代碼 代碼如下:1~~~~/dev/urandom在Linux中有一個裝置/dev/urandom是用來產生隨機數序列的。利用該裝置我們可以根據在需要產生隨機字串。比如我們要產生一個8位的字母和數字混合的隨機密碼,可以這樣:複製代碼 代碼如下:[linux@test /tmp]$ cat /dev/urandom | head -1 | md5sum | head -c 86baf92822~~~~其實,linux已經提供有個系統內容變數了。複製代碼
Time of Update: 2017-01-18
複製代碼 代碼如下:useradd.sh#!/bin/bashfor name in tom joy john mark jamesdo useradd $name echo "redhat" | passwd --stdin $namedone好了,執行結束後會自動建立使用者tom、joy、john
Time of Update: 2017-01-18
即比如我有100個可執行檔,互相間沒有特別的先後執行關係,如CODE:複製代碼 代碼如下:job_1job_2job_2.....job_100想用csh/bash來多線程調用執行。比如一次開5個線程,那麼job_1,2,3,4,5一起先開始,那麼其中任何一個線程如果先執行完成,則繼續執行下一個沒有初執行過的檔案,如job_6,7,8....,這樣一直以所指定的線程數來執行所有100個檔案。我本來想用 "&"
Time of Update: 2017-01-18
公司有幾個伺服器開著多個memcached進程,除了要監控他們是否正常telnet通,執行個體是否存在外還要監控他們的快取命中率。針對他們的快取命中率進行警示。網上有個perl寫的,需要編譯安裝。有個python寫的,貼過來運行下,發現python庫版本不對。這麼簡單的指令碼搞得這麼費勁,就手動寫了個。越寫就越覺得shell處理資料,函數,字串數組這方面太弱勢了。還好,湊合用吧。這個指令碼比較簡單,通過check_tcp指令碼擷取memcached的stats資訊。然後將該資訊格式化成一個字串,
Time of Update: 2017-01-18
最近指令碼中總是需要計算,每次都用awk會比較麻煩,就把awk的加減乘除封裝了下,每次調用直接source math.sh就可以了。有些要點要指出,以免以後修改的時候忘記: 1、對兩個數字進行判斷是否為數字,使用awk進行匹配2、對兩個參數進行迴圈校正(寫兩次校正顯得笨拙),需要使用變數的引用${!para}。複製代碼 代碼如下:#!/bin/bash#############################重寫shell中基本數學運算+ - × /#時間:2
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/shwhile sleep 30doSquidNum=`ps -ef|grep squid|grep -v grep|wc -l`#HttpNum=`netstat -an|grep 0.0.0.0:80|grep -v grep|wc -l` #80狀態if [ $SquidNum != 3 ] ; then/etc/rc3.duid startadddate=`date +%Y-%m-%d`" "`date +%H:%M:%S`echo "$adddate
Time of Update: 2017-01-18
參數:pathname,儲存臨時檔案的路徑檔案名稱,需要手動free()掉。dir,臨時檔案的路徑,如果TMPDIR環境變數不為空白,則此參數被忽略,轉而使用環境變數。pfx,臨時檔案名稱的首碼,只使用前5個字元。註:建立的臨時檔案需要手動unlink()掉。建立臨時檔案的函數 複製代碼 代碼如下:int Make_temp_file(char **pathname,const char *dir,const char *pfx){ char *ptr,*tmp;
Time of Update: 2017-01-18
複製代碼 代碼如下:#include"apue.h"int userlogin(struct passwd **);int main(){ int ret,i=0; long ret_cwd; struct passwd *pw; char buf[128],hostname[16],usercwd[128]; char *ptmp1; do{ ret =
Time of Update: 2017-01-18
如果想要在變數後面添加一個字元,可以用一下方法:複製代碼 代碼如下:$value1=home$value2=${value1}"="echo $value2把要添加的字串變數添加{},並且需要把$放到外面。這樣輸出的結果是:home=,也就是說串連成功。又如:複製代碼 代碼如下:[root@localhost sh]# var1=/etc/[root@localhost sh]# var2=yum.repos.d/[root@localhost sh]# var3=${var1}${var2}[
Time of Update: 2017-01-18
一例批量轉換目錄下檔案編碼的shell指令碼代碼。需求描述:由於從window轉linux過來,很多原來win下的gbk檔案需要轉換成utf8。以下指令碼僅判斷非utf8檔案轉換成utf8檔案,並且預設非utf8檔案為gbk,如果檔案類型不一致需要修改。例子:複製代碼 代碼如下:#!/bin/bash# File Name: iconv.sh# Author: wanggy# site: www.jb51.net#show_file(){ for file
Time of Update: 2017-01-18
任務計劃 crontab -l 1 15 * * * /home/dongnan/sh/split.sh >> /home/dongnan/sh/cron.log 2>& nginx 日誌 ls /var/log/nginx/ 20130730-access.log.gz 20130801-access.log.gz 20130803-access.log.gz 20130730-error.log.gz
Time of Update: 2017-01-18
不知道各位同鞋有沒有管理數百台的Linux 作業系統的經曆,雖然通過ssh私匙可以免密碼登陸,但是每天輸入幾十遍的伺服器ip 地址,我真的好像砸碎鍵盤,所以後來學會偷懶利用shell 指令碼登陸,思路只是把ip 地址的最後一位傳遞給shell 指令碼,就可以最快速登陸了,如果有多個不同子網的ip 地址,建立相應的shell 指令碼即可。 使用方法 [zongming@monitor ~]$ ssh5 113 環境變數 echo $PATH
Time of Update: 2017-01-18
本節內容:保留檔案系統下剩餘指定數目的檔案例子:複製代碼 代碼如下:#!/bin/bash #------------------------------- #Description: Back up your files#site: www.jb51.net#------------------------------- #shell 變數path_source=/mnt/fifth/shell path_backup=/mnt/fifth/backup/shellbackup
Time of Update: 2017-01-18
c檔案printPid.c複製代碼 代碼如下:#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/sched.h>#include <linux/list.h>static __init int printPid(void) //安裝模組函數{ struct
Time of Update: 2017-01-18
關於雙鏈表實現,一般教科書上定義一個雙向鏈表節點的方法如下:複製代碼 代碼如下:struct list_node{stuct list_node *pre;stuct list_node *next;ElemType data; }即一個鏈表節點包含:一個指向前向節點的指標、一個指向後續節點的指標,以及資料域共三部分。但查看linux核心代碼中的list實現時,會發現其與教科書上的方法有很大的差別。來看看linux是如何?雙鏈表。雙鏈表節點定義複製代碼 代碼如下:struct
Time of Update: 2017-01-18
shell中的case語句:可以把變數的內容與多個模板進行匹配,再根據成功匹配的模板去決定應該執行哪部分代碼。使用格式:case 匹配母板 in模板1 [ | 模板2 ] … ) 語句組 ;;模板3 [ | 模板4 ] … ) 語句組 ;;esaccase語句的匹配是從上往下地匹配順序。因此,case語句編寫的原則是從上往下,模板從特殊到普通。在C語言裡,case語句中有default模板,而在shell程式設計中,可能將模板寫成*,就可以完成相同的功能。例1:複製代碼 代碼如下:#!/bin/
Time of Update: 2017-01-18
最近看了一篇通過nagios實現MD5即時監控iptables狀態的文章,就想是否可以用shell也做到監控iptables規則改變,經過實驗,就有了下面這個指令碼.系統:centos 5.x指令碼內容:cat check_iptables.sh複製代碼 代碼如下:#!/bin/bashif [ ! -f .count ];then iptables -L -n|md5sum|awk '{print $1}' > ~/.count exit 1else
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/bash#Description: delete files#=====定義當前年份,月份以及檔案所在目錄=====#currentYear=`date