Time of Update: 2017-01-18
一、定義函數複製代碼 代碼如下:function fname(){statements;}或複製代碼 代碼如下:fname(){statements;}二、調用函數只需要使用函數名,即可調用某個函數:$ fname ; #執行函數可以傳遞參數給函數,並由指令碼進行訪問:fname arg1 arg2; # 傳遞參數以下是函數fname的定義。在函數fname中,包含了各種訪問函數參數的方法。複製代碼 代碼如下:fname(){ echo $1, $2; #
Time of Update: 2017-01-18
一、通過定時收發email檢測網路連通性複製代碼 代碼如下:#/bin/bashecho "Daily test mail" > state.txtmail -s Server_State abc@jb51.net < state.txtrm -df
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/bash#telno 為查詢號碼列表檔案#sendsms.log 為簡訊發送結果檔案#1 代表發送成功query_sms(){>submit_telno>delivered_telno>fail_delivered_telnocat telno |while read line do#判斷telno 檔案裡的號碼哪些提交成功---儲存到submit_telnoawk '{if
Time of Update: 2017-01-18
需求:刪除檔案,目錄結構為:ip/年份/月份,每個人都有一份這樣的目錄現需要刪除2012年以前的所有檔案,2012年以後的刪除特定月份。本來想用find,結果發現這些檔案time(a,m,c)記錄已經不是當初產生的。沒辦法只好想了個土辦法去遍曆,哪位有好的方法,歡迎告知。複製代碼 代碼如下:#!/bin/bashcd /home/wanggy/rmfile/ls -l | grep ^d | awk '{print $NF}'
Time of Update: 2017-01-18
將bill 檔案夾下的檔案按一定規則(檔案名稱奇偶)拷貝至bill1,bill2 檔案夾下。更新bill1,bill2 處理進度標籤(更新file.max)file3 為bill 目錄下當前最新檔案的標籤,正常情況下每分鐘會更新(格式為:20121016122100)複製代碼 代碼如下:#!/bin/bash#for wanggy 2012/10/16bill1=/infosms/bill1bill2=/infosms/bill2file_max=`cat file3`cd
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/bash#********************************##2013-01-11 17:00:00 wanggy exp ##note:ping monitor ##********************************#set -uping_fun(){&
Time of Update: 2017-01-18
ini DEMO複製代碼 代碼如下:[TESTFTP]host=127.0.0.1name=mypass=mylovetype=ftp[TESTSSH]host=127.0.0.1name=mypass=mylovetype=ssh[END]Shell指令碼:複製代碼 代碼如下:initConf(){HOSTID=$1CONF=$2echo "----cat----"cat $CONF \\ | grep -v ^$ \\
Time of Update: 2017-01-18
使用python做web開發,現在流行使用uwsgi調用python程式,但是使用uwsgi一段時間發現有一個弊端,就是每次更改原始碼後必須重啟uwsgi才會生效,包括更改模板檔案也是,我是個懶人,再經過一段時間反覆的更改-重啟後我終於忍受不了,決定寫一個指令碼來定時程式目錄的檔案改動,並及時自動重啟uwsgi,來解放我的雙手可以不用理會這些瑣碎的重啟工作. 用了點時間來編寫了一個指令碼用來判斷是否更改,然後判斷是否需要重啟uwsgi.下面放出指令碼內容:#!/bin/bash# Author
Time of Update: 2017-01-18
有時候編寫指令碼時會出現類似標題列出的錯誤,這個問題大多數是因為你的指令檔在windows下編輯過。windows下,每一行的結尾是\n\r,而在linux下檔案的結尾是\n,那麼你在windows下編輯過的檔案在linux下開啟看的時候每一行的結尾就會多出來一個字元\r,用cat -A urfile時你可以看到這個\r字元被顯示為^M,這時候只需要刪除這個字元就可以了。可以使用命令sed -i 's/\r$//' urfile
Time of Update: 2017-01-18
讓我們用這些Unix/Linux命令技巧開啟新的一年,提高在終端下的生產力。我已經找了很久了,現在就與你們分享。> /path/to/file.log# 或使用如下格式: > /path/to/file.log # 然後刪除它 rm /path/to/file.log如何記錄終端輸出?試試使用script命令列工具來為你的終端輸出建立輸出記錄。script my.terminal.sessio輸入命令:lsdatesudo service foo
Time of Update: 2017-01-18
前天正在跟前端的同事調試功能。伺服器開好,類比的玩家登入好,就在倒計時。這時突然運營的同事跑過來說要統計幾個伺服器玩家的一些情況,也就是需要從幾個服的資料庫匯出部分玩家的資料。好吧,我看了一下時間,11:47。心想,跟前端調試完,去吃個飯再午休一下那就下午再給吧。沒想對方來一句"就導個資料庫而已,要這麼久嗎?",而且還是直接跟我上司說的。我嚓,好吧,我導。可問題來了,平時的統計是由php做的,批量部署這些是由營運做的。服務端完全沒有對應的工具。而且伺服器是在阿里雲上的,資料庫的使用者是限制了ip
Time of Update: 2017-01-18
自從法現 SSH 可以執行遠端命令後,ftp 軟體也漸漸很少用了。每次補救伺服器代碼,都要打包、上傳、登入到伺服器修改檔案許可權、更新 Cache 等等,又慢又容易出錯,所以做成指令碼,一次幫我搞定,自己就點上一根煙坐在電腦面前發獃,要麼就玩會兒《植物大戰殭屍》啥的,悠閑!PS: Ant 以及 Phing 使用者,你們可以無視了… 我只是喜歡玩 Shell 而已。複製代碼
Time of Update: 2017-01-18
用mint 有一段時間了,下載基本用firefox,有時下載幾個G的遊戲。可是firefox沒有找到下載完關機的選擇。處於這個原因,寫了這個。download_shutdown.sh#!/bin/bash# Created By: Demo <demo@demo.com># Created Time: 2015-01-30 12:36:44# Modified Time: 2015-01-30 12:54:21dir=$1while [ "1" ]do if [ ! -d
Time of Update: 2017-01-18
在上一篇關於shell編程的例子中,有講到把shell指令碼進行擴充之後重新導向到一個檔案中,以便進行查看和調試http://www.jb51.net/article/62435.htm。但是,若是有另一種情況:只是在某些地方進行重新導向,而其他地方不進行重新導向。那麼我們就來修改一下上一篇中的例子來進行這種需求的滿足:複製代碼 代碼如下:#!/bin/bashfunction setlogfile{ if ! [ -z "$1" ]; then &
Time of Update: 2017-01-18
各種知識點都寫在注釋裡。只需要 sudo $PATH/ftpsetup.sh即可,預設以test/test為使用者名稱密碼登入,登入後的根目錄唯讀,子目錄writable可寫。Ubuntu 13和Linux Mint 15上測試ok。複製代碼 代碼如下:#!/bin/bash# by liuhx 2013-Nov-04.# 設定ftp環境的指令碼。ftp的根目錄為唯讀,其下的writable目錄為可寫# 可自訂以下四項# ftp使用者名稱userName="test"#
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/usr/bin/expect -fset ipaddress [lindex $argv 0]set passwd [lindex $argv 1]set timeout 30spawn ssh root@$ipaddress#expect "yes/no"#send "yesr"expect "password:"send "$passwdr"expect "]*"send "mkdir -p /tmp/haha/haha2r"send "exitr"********
Time of Update: 2017-01-18
if, for, while幾乎是所有程式設計語言的關鍵字,在Shell編程中也不例外,其中if是使用頻率最高的,由於Shell編程中不存在對象(Object)的概念,因此在if的比較判斷中主要是對字串、數位值進行比較判斷的:一. if的基本文法1.if與[之間要有空格2.[]與判斷條件之間也必須有空格3.]與;之間不能有空格二. 對字串的判斷1.if [ str1=str2 ];then fi #當兩個字串相同時返回真2.if [ str1!=str2 ];then fi
Time of Update: 2017-01-18
一、調試指令碼調試功能是每一種程式設計語言都應該實現的重要特性之一,當出現一些始料未及的情況時,用它來產生指令碼的運行資訊,調試資訊可以幫你弄清楚是什麼原因使得程式發生崩潰或者行為異常。二、Bash內建調試功能使用Bash的內建調試功能,可以對整個指令碼進行調試,也可以僅對指令碼中的某些語句進行調試。#使用set -x和set +x對指令碼的某一句進行調試複製代碼 代碼如下:#!/bin/bashfor i in { 1 2 3 4 5 6 };do set
Time of Update: 2017-01-18
1、前言 快半年沒有寫部落格了,荒廢了很久,工作中的雜事太多,自己越來越懶了。為了鞭策自己成長,還是要堅持寫寫部落格,記錄自己的成長。2、shell函數介紹文法:複製代碼 代碼如下: [ function ] funname [()]{ action; [return int;] } 說明:(1)可以帶function fun() 定義,也可以直接fun()
Time of Update: 2017-01-18
linux下通過命令列擷取gmail的新郵件,不需輸入@gmail.com部分#!/bin/bash num="\033[1;36m"end="\033[0m" read -p "Enter your mail: " nameread -p "Enter pass of mail: " pass atom=`wget -qO - https://$name:$pass@mail.google.com/mail/feed/atom \ --secure-protocol=TLSv1 -T 3