Time of Update: 2017-01-18
星期六我們一位客戶受到攻擊,我們的網路監測顯示有連續6小時的巨大異常流量,我們立即聯絡了客戶,沒有得到回應,我們修改和限制了客戶的 VPS,使得個別 VPS 受攻擊不會對整個伺服器和其他 VPS 使用者造成任何影響,我們一直保持這個 VPS 為開通狀態(儘管一直受攻擊),攻擊又持續了24小時,星期天攻擊仍在繼續,我們忍無可忍,但是仍然無法連絡到客戶,我們向客戶網站的另一負責人詢問是否需要我們介入來協助解決,這位負責人答應後我們立即投入到與 DDoS 的戰鬥中(我們動態掃描屏蔽壞
Time of Update: 2017-01-18
網上有很多 shell script 讀文字檔的例子,但是都沒有講出故事的全部,只說了一半。舉個例子,比如從一個 testfile 檔案中讀取如下格式的文本行:複製代碼 代碼如下:$ vi testfilels -a -l /bin | sortls -a -l /bin | sort |
Time of Update: 2017-01-18
寫法一:複製代碼 代碼如下:#!/bin/bashwhile read linedo echo $line #這裡可根據實際用途變化done < urfile寫法二:複製代碼 代碼如下:#!/bin/bashcat urfile | while read linedo echo $linedone注意:以上代碼中urfile
Time of Update: 2017-01-18
今天看一個指令檔的時候有一些地方不太懂,找了一篇文章看了一些,覺得不錯,保留下來。 假設我們定義了一個變數為:複製代碼 代碼如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分別替換得到不同的值:複製代碼 代碼如下:${file#*/}:刪掉第一個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt${file##*/}:刪掉最後一個 / 及其左邊的字串:my.file.txt${file#*.}:刪掉第一個
Time of Update: 2017-01-18
寫這篇部落格之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後NOPASSWD:指定的cmd,但是真心不管用,沒有遠程虛擬終端這個方法就是浮雲,ubuntu10.04 server 親測!!ssh執行遠程操作命令格式複製代碼 代碼如下:ssh -p $port $user@$p 'cmd' $port : ssh串連連接埠號碼 $user: ssh串連使用者名稱 $ip:ssh串連的ip地址
Time of Update: 2017-01-18
當初在shell中, 看到">&1"和">&2"始終不明白什麼意思.經過在網上的搜尋得以解惑.其實這是兩種輸出.在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:0 是一個檔案描述符,表示標準輸入(stdin)1 是一個檔案描述符,表示標準輸出(stdout)2 是一個檔案描述符,表示標準錯誤(stderr)在標準情況下, 這些FD分別跟如下裝置關聯: stdin(0): keyboard 鍵盤輸入,並返回在前端 stdout(1):
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
這是一個 shell 指令碼,所以首先你需要安裝一個基本的 Cygwin 環境,當然還有 curl。原理很簡單,先從 cygwin.com 下載最新的 mirrors.lst 鏡像列表,簡單處理一下後,利用 curl 以此檢測每個網站的連線速度,並將結果記錄下來,最後再排個序,顯示出最快的幾個網站。在使用的過程中,我發現檢測到的最快的 mirror,實際上使用速度並不一定是最快的,這可能和伺服器有關係,畢竟 curl 檢測的時間只是讀取 mirror 首頁的時間。不過每個 mirror
Time of Update: 2017-01-18
我很迷戀 Shell,很喜歡看著字元在黑色的 Console 介面中跳躍著,奇怪的是,我居然沒有因此成為一個 Linux/Unix 程式員,而只是個寫 CGI 程式的倒黴蛋。大家都是怎麼稱呼 “PHP 程式員”的?對了——草根~ 嗯,在土裡埋的太久,說不定哪天就爛掉了咯! 可能是被 Windows 慣壞了,實在不想換個 OS,還好有 Cygwin,MinGW … 之類的東西, 適當的時候,可以拿出來裝下 B,自我安慰一下~我總喜歡從 windows.php.net 下載最新的
Time of Update: 2017-01-18
自從法現 SSH 可以執行遠端命令後,ftp 軟體也漸漸很少用了。每次補救伺服器代碼,都要打包、上傳、登入到伺服器修改檔案許可權、更新 Cache 等等,又慢又容易出錯,所以做成指令碼,一次幫我搞定,自己就點上一根煙坐在電腦面前發獃,要麼就玩會兒《植物大戰殭屍》啥的,悠閑!PS: Ant 以及 Phing 使用者,你們可以無視了… 我只是喜歡玩 Shell 而已。複製代碼
Time of Update: 2017-01-18
由於工作需要,經常要從 Windows 主機訪問遠端 Ubuntu 伺服器,每次輸入帳號和老長的密碼,感覺很麻煩,於是參考網上的教程簡單的設定了一下就能自動登陸遠程主機了,非常的方便。雖然 Putty 也提供了 puttygen.exe 產生公/密鑰,但是和 Linux 主機產生的 KEY 格式不同,需要手工修改格式,所以採用 Linux 主機自己產生 KEY 的方式。首先登陸到 Linux 主機,具體過程如下:1. 產生公開金鑰和密鑰複製代碼 代碼如下:verdana@hostname:~$
Time of Update: 2017-01-18
Git 的好處之一就是把代碼的分支管理變成了一件極其便捷的事情,分支只保留差異,不用複製任何檔案,不用串連網路,快速建立,用完即刪。Git 分支與項目的複雜程度無關,不管你的項目多麼複雜,建立 Git 分支永遠都是瞬間的事情。同時,因為保留了父類分支的資訊,所以分支的合并也變得異常簡單。當在一個項目中頻繁使用多個分支時,可以使用 git status 命令查詢自己現在正工作在哪個分支下面,不過難免有腦子發昏的時候,忘記自己在哪個分支下面,因而發生誤操作之類的杯具。那麼把分支顯示在 Shell
Time of Update: 2017-01-18
大多數人在使用 Bash 時,都會對其進行改造,因為預設的設定真的好難用~參考以下 ~/.inputrc 設定:複製代碼 代碼如下:# do not show hidden files in the listset match-hidden-files off # auto complete ignoring caseset show-all-if-ambiguous onset completion-ignore-case on"\ep":
Time of Update: 2017-01-18
嵌入式初學者,第一次上傳代碼。昨天做了一個udhcpd與udhcpc的守護,目前只會用shell模仿編寫,還有什麼方法可以做守護呢?#! /bin/sh#進程名字可修改PRO_NAME=udhcpcWLAN=ra0 while true ; do # 用ps擷取$PRO_NAME進程數量 NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`# echo $NUM# 少於1,重啟進程 if [ "${NUM}" -lt "1"
Time of Update: 2017-01-18
Linux Shell指令碼檢測tomcat並自動重啟後台運行命令 sh xxx.sh &查看背景工作:jobs召喚到前台:fg jobs編號可以刪掉while迴圈的代碼放到crontab裡面定時執行,可以將指令碼直接後台運行,#!/bin/bashwhile [ true ]do url="http://www.jb51.net/"; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk 'NR==1{
Time of Update: 2017-01-18
shell版Nginx日誌蜘蛛爬取查看指令碼用之前改一下nginx日誌的路徑即可如果 更多的蜘蛛 自己在 代碼蜘蛛UA數組裡加即可#!/bin/bash m="$(date +%m)"case $m in "01") m='Jan';; "02") m='Feb';; "03") m='Mar';; "04") m='Apr';; "05") m='May';; "06") m='June';; "07") m='July';; "08") m='Aug';; "09") m=
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指令碼打交道,遍曆一個時間範圍是很常見的事情,那麼今天就跟大家分享一下:複製代碼 代碼如下:#!/usr/bin/env bashdate1="$1"date2="$2"echo "date1: $date1"echo "date2: $date2"tempdate=`date -d "-0 day $date1" +%F`enddate=`date -d "-0 day $date2" +%F`tempdateSec=`date -d "-0 day $date1"
Time of Update: 2017-01-18
在上一篇關於shell編程的例子中,有講到把shell指令碼進行擴充之後重新導向到一個檔案中,以便進行查看和調試http://www.jb51.net/article/62435.htm。但是,若是有另一種情況:只是在某些地方進行重新導向,而其他地方不進行重新導向。那麼我們就來修改一下上一篇中的例子來進行這種需求的滿足:複製代碼 代碼如下:#!/bin/bashfunction setlogfile{ if ! [ -z "$1" ]; then &