1. 系統安裝完成後,須要檢查sweed運行情況;
curl 127.0.0.1:/9333/dir/status?pretty=y
2. Cboss訪問sweed,須要在第一臺主節點防火牆打開外網權限,不然cboos圖片上傳會出問題;
3. 查看當前一級目錄文件大小
du -h --max-depth=1
4. 檢查nginx進程是否存在:
ps -C nginx --no-header |wc -l
5. 統計目錄下文件和目錄個數:
ll | wc -l
6.
mkdir /var/www/weedfs && chmod 777 /var/www/weedfs
nohup /usr/local/sunlight/weed -log_dir=/var/log/weed/ server -ip 192.168.89.211 -master.port=9333 -master.defaultReplicaPlacement=001 -dir=/var/www/weedfs -volume.port=8180 -volume.max=10 -master.peers=192.168.89.212:9333,192.168.89.213:9333 &php
nohup /usr/local/sunlight/weed -log_dir=/var/log/weed/ server -ip 192.168.89.212 -master.port=9333 -master.defaultReplicaPlacement=001 -dir=/var/www/weedfs -volume.port=8180 -volume.max=10 -master.peers=192.168.89.211:9333,192.168.89.213:9333 &html
nohup /usr/local/sunlight/weed -log_dir=/var/log/weed/ server -ip 192.168.89.213 -master.port=9333 -master.defaultReplicaPlacement=001 -dir=/var/www/weedfs -volume.port=8180 -volume.max=10 -master.peers=192.168.89.211:9333,192.168.89.212:9333 &
curl 127.0.0.1:9333/dir/status?pretty=y
curl -X GET 127.0.0.1:9333/dir/assign
7,f783a5378d
/var/lib/myql/grastate.dat
請求fid
curl -X GET 127.0.0.1:9333/dir/assign
curl http://192.168.88.48:9333/dir/lookup?volumeId=10
curl -X POST -F file=@1117518589f06eb094o.jpg http://192.168.88.47:8180/10,029d27af767b
前端
7.
sweed服務器能夠增長volume數目 -volume.max=10
新的sweed就緒後,須要從新執行assign命令,使volumn服務器可用;
8. 調整系統時間:
vim /etc/adjtime 把UTC改爲LOCAL
182.247.239.156
9.node
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agentd.service to /usr/lib/systemd/system/zabbix-agentd.service.
10.
zypper addrepo \
https://storebits.docker.com/ee/sles/sub-2bf76308-3675-49bc-9eca-88ac9ca0d356/12.3/x86_64/stable-17.03 \
docker-ee-stablepython
rpm --import https://storebits.docker.com/ee/sles/sub-2bf76308-3675-49bc-9eca-88ac9ca0d356/gpgmysql
11.linux
1)HAProxy對於後端服務器一直在作健康檢測(就算請求沒過來的時候也會作健康檢查):
後端機器故障發生在請求還沒到來的時候,haproxy會將這臺故障機切掉,但若是後端機器故障發生在請求到達期間,那麼前端訪問會有異常。也就是說HAProxy會把請求轉到後端的這臺故障機上,並通過屢次探測後纔會把這臺機器切掉,並把請求發給其餘正常的後端機,這勢必會形成一小段時間內前端訪問失敗。
2)Nginx對於後端的服務器沒有一直在作健康檢測:
後端機器發生故障,在請求過來的時候,分發仍是會正常進行分發,只是請求不到數據的時候,它會再轉向好的後端機器進行請求,直到請求正常爲止。也就是說Nginx請求轉到後端一臺不成功的機器的話,還會再轉向另一臺服務器,這對前端訪問沒有什麼影響。
3)所以,若是有用HAProxy作爲前端負載均衡的話 ,若是後端服務器要維護,在高併發的狀況,確定是會影響用戶的。但若是是Nginx作爲前端負載均衡的話,只要併發撐得住,後端切掉幾臺不會影響到用戶。 nginx
12.
number_format()自帶千分位分隔符,用它處理後的數字插入數據庫會出錯,
可以使用第四個參數,把千分位設置爲空。git
13.
遞歸函數,如何返回?web
function getItemParentId($id,$ty=6,$rt)
{
$id = intval($id);
$sql = "SELECT `objectid`, `categoryid` FROM `categorymap` WHERE objectid = ".$id." AND objecttype=".$ty;
$result = $this->obj_db->fetch_row($sql,$list);
if (!$result)
{
$log_location = "[" . __FILE__ . ":" . __FUNCTION__ . ":" . __LINE__."]";
tool_utils::log(LOG_LEVEL_ERROR, $log_location, "sql: [$sql]");
$res = array(
'ResultCode'=>self::ERR_CODE,
'ResultDesc'=>self::ERR_DES.'-'.'categoryid表查詢失敗!'
);
echo json_encode($res);exit();
}
if(in_array(intval($list['categoryid']),$rt))
{
return intval($list['objectid']);
}else if(intval($list['categoryid']) != 0)
{
return $this->getItemParentId($list['categoryid'],1,$rt);
}else{
return $list['objectid'];
}
}
14.
php5.5如下,不支持array_column,能夠用array_walk抽取數組特定列:
$rootsss = array();
array_walk($roots, function($value, $key) use (&$rootsss ){
$rootsss [] = $value['categoryid'];
});
雲南服務器升級:
1. 內網VIP: 192.168.88.189
外網VIP:反向代理節點的實IP;
2. 反向代理節點,管理節點,同時安裝keepalived,maxscale,設置keepalived開機自啓動;
3. 前兩個應用節點,須要卸載haproxy,keepalived;
4. 第一個應用節點,卸載Maxscale;
5.
防火牆,深圳總部:218.17.162.117
爬蟲安裝:
1. SunCrawler2更更名稱爲SunCrawler
2. weather.ini /usr/local/sunlight/conf
3. 數據庫文件從/usr/local/sunlight/conf/server.conf讀取
文件同步/usr/local/sunlight/efsync
110,132,134,135須要修改同步目錄
文件同步工具安裝:
1. 必須執行安裝腳本,進行初始化安裝(有附帶軟件須要裝上);
2.拉取重慶/usr/local/sunlight/efsync/conf/hotelinfo.ini
拉取重慶/usr/local/sunlight/efsync/EFSyncMainCtrl.sh
修改配置文件;
3.nohup EFSyncMainCtrl.sh push &
/usr/local/sunlight/efsync/tools/kill_by_name.sh 刪掉進程
ps -ef|grep EFS 判斷進程是否存在
4. 各應用節點,edge_hwserver輸入不執行,文件不能同步;
5. 測試: ssh -o StrictHostKeyChecking=no -p 22 -i /usr/local/sunlight/sshkeys/init.pk 192.168.86.74
6. 須要同步的文件夾: /iptv /epgservice /app
Sunaudit:
slib/CADB.class.php
須要讀取 /usr/local/sunlight/conf/sunaudit.conf
審覈的定時任務:
/etc/cron.d/
如 採用https協議,會對審覈產生影響,審覈平臺沒法接收參數!
修改SUSE默認啓動級別(開機後進入命令行而不是桌面環境):
ln -fs /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
systemctl set-default multi-user.target
systemctl set-default graphical.target
天氣預報代碼:
1. 拷貝weather.ini /usr/local/sunlight/conf
2. 若是手動執行,須要清空SunCrawler目錄下的data目錄;
3. 查詢weathercity,裏面的城市status;
4. 拷貝定時任務;
2017/6/23
while循環登陸ip,須要加-n參數!!!!!!!!!!!!!
ssh -n -o StrictHostKeyChecking=no -p 22 -i /usr/local/sunlight/sshkeys/init.pk 192.168.86.74
2017/6/26
shell-if-語句空操做的寫法:
if ((1==1))
then
:
fi
2017/6/27
綁定終端-導入的csv格式文件,應包含三列數據(老版本須要導入前兩列;)
用戶ID,房間號,盛陽終端號
若是隻有一個終端,則終端號和房間號相同;
一個套房若是有兩個終端,則終端號命名規則以下:
房間號801,
第一個終端號8011
第二個終端號8012
剛纔葉濤又強調了一次,若是提示三列,必定要導入三列16:44;
2017/6/28
查看當前服務器
maxadmin list servers
查看當前服務
maxadmin list services
導入終端,牽涉到兩張表;
hotel - 查找hotelid
stbhotelmap - 經過hotelid查找終端;
深圳經濟特區居住證服務平臺
https://szjzz.szga.gov.cn/index/manage/viewDocument
用戶名:ralphdc
密碼:Abc87113447
市政統一入口,用戶名密碼同上;
https://sz12333.gov.cn
申辦居住證人員覈實學歷
匯園雅居-管理處->粵海街道辦事處->麻嶺社區工做站(電話未能接通)
saaa模塊在APK模式安裝後,須要開放UDP-8088端口;
須要檢查smon配置文件:
/usr/local/sunlight/proc_list 不
開啓saaa的配置是否存在而且沒有被註釋掉;
dear all:
在執行當前考勤制度同時,容許總部加班較多的同事有必定的上班彈性,具體操做以下:
(1)若是前一天下班時間超過晚上8點30分,次日能夠不晚於9點30分上班;
(2)若是前一天下班時間超過晚上9點30分,次日能夠不晚於10點上班;
(3)若是前一天下班時間超過晚上12點,能夠申請調休半天。
以上調整自12月12日起開始執行,其餘仍參照現有考勤制度執行。
測試環境:
115.28.104.91
ssh port: 11022
http port 11080
user: root
passwd: sunlight2010
正式環境:(密碼不能外傳)
115.28.104.91
ssh port: 22
user: root
passwd: SLadminn2#m
表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。默認狀況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操做.
運營商ssh密碼規則,你們看下如何:
sladmin@yn.01.g,sladmin@yn.01.y,sladmin@yn.01.f
yn -- 雲南(省)
01 -- 第一個運營商(之後順序要定義好,例如湖北爲02)
g -- 管(g)理服務器
y -- 業(y)務服務器
f -- 反(f)向代理服務器
考慮到管理服務器須要對接PMS,因此感受密碼仍是要區分一下
2017/07/17
sql讀取一條記錄,limit 1;
2017/07/18
88.59 打包腳本
@超人超 回頭配置一下nginx的日誌格式,把每一個請求的花費時間放出來
2017/07/21
子網掩碼只有一個做用,就是將某個IP地址劃分紅網絡地址和主機地址兩部分。
子網掩碼是一個32位地址,用於屏蔽IP地址的一部分以區別網絡標識和主機標識,並說明該IP地址是在局域網上,仍是在遠程網上。
子網掩碼(subnet mask)是每一個使用互聯網的人必需要掌握的基礎知識,只有掌握它,纔可以真正理解TCP/IP協議的設置。
2017/07/24
董超,放大線程數後,要觀察下系統句柄數佔用狀況,避免把系統資源消耗光。另外,要研究下maxscale的回收配置,不能一直這麼增加。
2017/07/27
修改hostname命令:
hostnamectl set-hostname hostname
2017/07/28
1. 管理節點首先向ntp.api.bz進行時間同步:
ntpdate -u ntp.api.bz
2. 系統時間同步後,寫入硬件,不然重啓後時間丟失;
展現硬件時間:hwclock --show
將系統時間寫入硬件時間:hwclock -w
sed中使用變量;
通常在sed 中替換都用單引號,以下邊
sed -in-place ‘s/8080/8001/g’ /home/work/server.xml
可是若是須要把8001改爲變量,如
sed -in-place ’s/8080/$port/g‘ /home/work/server.xml
這樣就不成功。
此時須要把單引號改爲雙引號,以下邊例子
$port=8001
sed -in-place "s/8080/$port/g" /home/work/server.xml
2017/07/31
今天嘗試編譯內核,下載到了一份tar.xz結尾的壓縮文件,網上解決方法比較少,不過仍是找到了,以下:
$xz -d ***.tar.xz
$tar -xvf ***.tar
能夠看到這個壓縮包也是打包後再壓縮,外面是xz壓縮方式,裏層是tar打包方式。
補充:目前能夠直接使用 tar xvJf ***.tar.xz來解壓
tcpdump -i any tcp port 10002
tcpdump -i tcp port 10002
2017/08/01
cdb20.stbhotelmap 導入的終端都在這個表裏面;
2017/08/02
stbid是一個設備號;
ps aux --sort -rss
2017/08/03
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$upstream_addr $upstream_response_time $request_time'
115.28.104.91 阿里雲
2017/08/07
數據庫安裝分支:
cdb20,sunaudit -> master,其它 2.4.9_unidb_dev
2017/08/08
1. show variables like 'hostname';
2. 修改最大鏈接數;
/etc/systemd/system.conf
sed -i '/DefaultTasksMax/a\DefaultTasksMax=10240'
3.管理節點,開啓防火牆後,要把本身的外網IP加入防火牆訪問規則;
4. event.sql從maxscale導入,能夠經過登陸單個節點,執行命令: show events 查看enable,disable狀況;
2017/08/10
sunboss-> enable_reverse_proxy 1
sunboss-> reverse_proxy_url_prefix /image
/etc/cron.d/ 目錄下的定時任務文件,由於全部者和全部用戶致使沒法執行;
2017/08/11
河南虛擬機安裝部署前,居然沒有檢查硬盤配置,致使後期要從新增長分區,給本身找麻煩!
心細很重要!
訪問公司內網——88.54
218.17.162.117,端口:10007
(此服務器爲88.54)
DELL - R210 安裝ESX6.5, 須要進bois設置,開啓虛擬化virtualize相關。。
SUSE中,zypper命令的使用:
zypper addrepo -f http://packman.inode.at/suse/SLE_12/ packman
zypper repos -d
zypper in git-core
阿里雲:
測試環境:
115.28.104.91
ssh port: 11022
http port 11080
user: root
passwd: sunlight2010
正式環境:(密碼不能外傳)
115.28.104.91
ssh port: 22
user: root
passwd: SLadminn2#m
2017/08/14
Git查看遠程倉庫信息:
git remote show origin
爬蟲:
master - 單體酒店版;
阿里雲,沒有數據庫參數配置文件,需寫入cdb20;
2017/08/16
88.52:/usr/local/pkgs/sp/2.0.0.v003
2017/08/17
SUSEfirewall2 防火牆設置:
FW_DEV_EXT="eth0"
FW_DEV_INT="eth1 eth2 eth3"
FW_PROTECT_FROM_INT="no"
FW_SERVICES_EXT_TCP="80 112 8088 9333 8180 10080"
FW_SERVICES_EXT_UDP="8088"
FW_SERVICES_ACCEPT_EXT="218.17.162.117,tcp,2222
122.143.10.36,tcp,112
122.143.10.38,tcp,112
122.143.10.38/24,tcp,9333
122.143.10.38/24,tcp,8180
115.28.104.91,tcp,2222"
route add default via 116.55.226.181 dev eth0
2017/08/21
1. OCService 位置: /var/www/html/slib/modules
2. git 建立分支命令行
1:Git branch branchName(在本地建立一個命名爲branchName的分支)
2:git branch 查看當前本身所在的分支
3:git branch -a 查看服務器的全部分支以及本身當前所在的分支
4:git push origin branchName(把命名爲branchName的本地分支推送到服務器)
5:git checkout --track origin/branchName (切換爲遠程服務器上的命名爲branchName的遠程分支)
6:若是你的搭檔要把他本地的分支給關聯到服務器上命名爲branchName的遠程分支,請執行如下操做,git branch --set-upstream localBranchName origin/branchName (爲本地分支添加一個對應的遠程分支 與之相對應)->這行命令用來關聯本地的分支與服務器上的分支
7:完成以上操做以後,就能夠進行提交代碼了,可是在提交代碼以前,你要肯定你當前所在的分支
8:git push origin branchName(提交代碼到遠程服務器上命名爲branchName的分支上)
9 :git pull origin branchName (從遠程分支上拉取代碼)
3. 在linux下使用curl訪問 多參數url GET參數問題
例如
url 爲 http://mywebsite.com/index.PHP?a=1&b=2&c=3
web形式下訪問url地址,使用$_GET是能夠獲取到全部的參數
然而在Linux下
curl http://mywebsite.com/index.php?a=1&b=2&c=3
$_GET只能獲取到參數a
因爲url中有&,其餘參數獲取不到,在linux系統中& 會使進程系統後臺運行
必須對&進行下轉義才能$_GET獲取到全部參數
curl http://mywebsite.com/index.php?a=1\&b=2\&c=3
4.
Git diff 能夠查看當前沒有add 的內容修改(不在緩衝區的文件變化)
git diff --cached查看已經add但沒有commit 的改動(在緩衝區的文件變化)
git diff HEAD 是上面兩條命令的合併
5.date_sub()函數的例子:
今天是2013年5月20日。
date_sub('2012-05-25',interval 1 day) 表示 2012-05-24
date_sub('2012-05-25',interval 0 day) 表示 2012-05-25
date_sub('2012-05-25',interval -1 day) 表示 2012-05-26
date_sub('2012-05-31',interval -1 day) 表示 2012-06-01
date_sub(curdate(),interval 1 day) 表示 2013-05-19
date_sub(curdate(),interval -1 day) 表示 2013-05-21
date_sub(curdate(),interval 1 month) 表示 2013-04-20
date_sub(curdate(),interval -1 month) 表示 2013-06-20
date_sub(curdate(),interval 1 year) 表示 2012-05-20
date_sub(curdate(),interval -1 year) 表示 2014-05-20
6. curl 命令請求https地址,若是報證書錯誤,能夠經過-k參數忽略證書驗證;
7.
本文實例講述了PHP針對字符串開頭和結尾的判斷方法。分享給你們供你們參考,具體以下:
//變量:
$s1 = "dotcoo world!";
$s2 = "dotcoo";
$s3 = "hello dotcoo";
//php判斷字符串開頭:
var_dump(substr($s1, 0, strlen($s2)) === $s2);
var_dump(strpos($s1, $s2) === 0);
var_dump(strncmp($s1, $s2, strlen($s2)) === 0);
var_dump(substr_compare($s1, $s2, 0, strlen($s2)) === 0);
//php判斷字符串結尾:
var_dump(substr($s1, 0, strlen($s2)) === $s2);
var_dump(substr_compare($s3, $s2, -strlen($s2)) === 0);
2017/08/22
操做系統的iso能夠從這裏下載:
(SLES12SP2)
連接:http://pan.baidu.com/s/1kVa7ATL 密碼:zqzo
2017/08/23
雲南-sunaudit登陸賬號:
user: shengyang
password: sunlight
系統啓動文件:
/etc/init.d/after.local
2017/0828
1). echo 不換行:
echo -e "Please Set A Hostname For This Server:\c"
或者: echo -n "123.."
2). shell判斷字符串爲空的方法有三種:
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ] (-n 爲非空)
注意:都要代雙引號,不然有些命令會報錯,養成好習慣吧!
3). memory leak 內存泄漏;
4). shell讀入變量:
read -p "Please input your choice(one|two|three|four):" num
5).shell正則匹配:
if [ `echo $slthostname | grep -E "^[A-Za-z0-9_-]+$"` ];then
fi
6). shell switch case語句:
case $num in
"one")
printInfo; echo $num | dotr
;;
"two")
printInfo; echo $num | dotr
;;
"Three")
printInfo; echo $num | dotr
;;
"four") printInfo; echo $num | dotr
;;
esac
shell將字符串中的逗號轉爲空格;
weed_cluster_str=${weed_cluster_str//,/ }
2017/08/30
inotifywait 配置文件,裏面對應的目錄,必定要存在,不然會循環報錯,致使程序阻塞。
2017/08/31
1). 安裝stunnel客戶端(實際,兩臺boss服務器都須要安裝);
2). 修改配置文件:/usr/local/sunlight/conf/stunnel.conf
例如:
host_id=160
master_host_name=218.17.162.117,115.28.104.91,112.80.41.151,120.25.57.223
(以上配置文件來自:88.54)
3).啓動stunnel進程;
4).開始測試
重大錯誤:
亞特蘭蒂斯運行環境,應該安裝單體酒店版,被我安裝成了運營商版!!!!!!!!!!!!!!!!!!!
2.
2.1) SHOW VARIABLES LIKE 'event_scheduler';
2.2) Mysql 刪除事件
EVENT使用DROP EVENT語句來刪除已經建立的事件,語法以下:
DROP EVENT
[IF EXISTS]
event_name
但當一個事件正在運行中時,刪除該事件不會致使事件中止,事件會執行到完畢爲止。使用DROP USER和DROP DATABASE 語句同時會將包含其中的事件刪除。
http://www.jb51.net/article/38319.htm
3.rm命令排除文件;
3.1)
rm -rf !(keep) #刪除keep文件以外的全部文件
rm -rf !(keep1 | keep2) #刪除keep1和keep2文件以外的全部文件
3.2)
ls | grep -v keep | xargs rm #刪除keep文件以外的全部文件
3.3). grep 'test' somefile | grep -vE '(error|critical|warning)' 一次grep -v 中使用多個 匹配詞
-v:顯示不包含匹配文本的全部行。
-E 使用擴展正則表達式
4. 模板不能保存的問題,路徑:/var/www/html/app/epggroup_default/welcomepage
2017/09/01
mysql -h $CUR_DB_HOST -P $CUR_DB_PORT -u$CUR_DB_USER -p$CUR_DB_PASS
p和$CUR_DB_PASS要緊密連在一塊兒,才能被mysql命令識別;
galera arbitrator
/etc/sysconfig/garb
# Copyright (C) 2013-2015 Codership Oy
# This config file is to be sourced by garbd service script.
# A space-separated list of node addresses (address[:port]) in the cluster:
GALERA_NODES="192.168.88.155:4567 192.168.88.156:4567"
# Galera cluster name, should be the same as on the rest of the node.
GALERA_GROUP="ytlds_app_cluster"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
#GALERA_OPTIONS="socket.ssl_cert=/etc/galera/cert/cert.pem;socket.ssl_key=/$"
# Log file for garbd. Optional, by default logs to syslog
LOG_FILE="/var/log/garb/garbd.log"
2017/09/02
shell腳本返回值的問題:
function Write_Log()
{
echo "log***222"
#echo $1 >> $SLT_BASE_DIR"/install.log"
echo "$*" >> $SLT_BASE_DIR"/install.log"
}
#!/bin/bash
funWithParam(){
echo "The value of the first parameter is $1 !"
echo "The value of the second parameter is $2 !"
echo "The value of the tenth parameter is $10 !"
echo "The value of the tenth parameter is ${10} !"
echo "The value of the eleventh parameter is ${11} !"
echo "The amount of the parameters is $# !"
echo "The string of the parameters is $* !"
}
#!/bin/bash
funWithReturn(){
echo "The function is to get the sum of two numbers..."
echo -n "Input first number: "
read aNum
echo -n "Input another number: "
read anotherNum
echo "The two numbers are $aNum and $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "The sum of two numbers is $? !"
#!/bin/bash
count=1
cat datafile.txt | while myline=$(line)
do
echo "LINE:"$myline
count=$[$count + 1]
#count=`expr $count + 1`
#echo $count
done
echo finish
echo "\r"
echo $count //輸出仍然是1?
該shell腳本的while控制結構中的變量count作加1算術運算,最後一行輸出值沒有改變。
在shell中變量定義都是global的,除非在function內部用local定義變量,在這裏爲何在最後一行的輸出中,變量count沒有增長呢
?首先確認文件datafile.txt裏面是有多行數據的,找到緣由是這樣的:cat datafile.txt | while 這裏用了管道符,
代表父shell中的局部變量不會傳遞到子shell中。問題解決
2017/09/03
find查找多個後綴名文件;
dos2unix `find . \( -name "*.ini" -o -name "*.conf" -o -name "*.sh" \)`
2017/09/04
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
init_connect='SET collation_connection=utf8-unicode_ci'
init_connect='SET NAMES utf8'
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
192.168.88.51 255.255.255.0
192.168.88.59 255.255.255.0
兩個網卡的掩碼問題!
2. netstat 命令,參數,查看tcp和udp協議端口;
netstat -nlutp
3.
shell腳本,判斷變量類型是否爲函數;
if [ "$(type -t $function_name)" != "function" ];then
write_install_log="Create_Weed_Install_Log"
else
write_install_log="Write_Log"
fi
2017/09/06
shell正則:
if [[ $1 =~ "TT" ]];then
....
shell 日期格式化:
date "+%Y-%m-%d %H:%M:%S"
IP後面的掩碼,通常設置爲24位!切記!
2017/09/07
arping -I eth0 192.168.86.101
ARPING 192.168.86.101 from 192.168.86.155 eth0
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.698ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.801ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.733ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.725ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.745ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.700ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.707ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.742ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.699ms
Unicast reply from 192.168.86.101 [18:66:DA:A8:47:CC] 0.729ms
find . \( -name "*.sh" -o -name "*.py" -o -name "*.ini" -o -name "*.cnf" -o -name "*.conf" -o -name "*.sql" \) | xargs dos2unix
grep -E '^Port[ ]*[0-9]+' /etc/ssh/sshd_config
201七、0九、08
注意source和sh執行腳本的區別;
sh腳本中引入其餘sh腳本執行,須要使用source關鍵字;
source filepath 與 sh filepath 、./filepath的區別:
當shell腳本具備可執行權限時,用sh filepath與./filepath是沒有區別的。./filepath是由於當前目錄沒有在PATH中,全部"."是用來表示當前目錄的。
sh filepath 會從新創建一個子shell,在子shell中執行腳本里面的語句,該子shell繼承父shell的環境變量,但子shell是新建的,其改變的變量不會被帶回父shell,除非使用export。
source filename其實只是簡單地讀取腳本里面的語句依次在當前shell裏面執行,沒有創建新的子shell。那麼腳本里面全部新建、改變變量的語句都會保存在當前shell裏面。
舉例說明:
新建一個test.sh腳本,內容爲:A=1;
修改其可執行權限:chmod +x test.sh;
運行sh test.sh後,echo $A,顯示爲空,由於A=1並未傳回給當前shell;
運行./test.sh後,也是同樣的效果;
運行source test.sh 或者 . test.sh,而後echo $A,則會顯示1,說明A=1的變量在當前shell中;
shell - while死循環
while true
do
done
"true"是小寫!
shell cut命令:
將 PATH 變量取出,我要找出第一到第三,還有第五個路徑。
echo $PATH | cut -d ':' -f 1-3,5
/bin:/usr/bin:/sbin:/usr/local/bin
實用例子:只顯示/etc/passwd的用戶和shell
#cat /etc/passwd | cut -d ':' -f 1,7
2017/09/11
海南有線-server.conf 裏的db_name=cdb20
單體酒店:
安裝包路徑:192.168.88.46:/usr/local/pkgs/SYS/2.8.0.007.tar.gz
運營商:
安裝包地址:192.168.88.46:/usr/local/pkgs/sp/2.0.0.008.tar.gz
2017/09/12
sunboss- 頻道管理-模擬頻道配置的url是沒法導出的,配置了也沒用!
2017/09/13
1. gnm從cboss接口獲取整個cdn系統的拓撲結構,包含id爲1的NM節點和它的各級子節點;
2.
2017/09/14
求兩個文件的交集
cat 20170901 20170810 | sort | uniq -d
刪除文件內全部控制字符;
sed -i 's/[\x01-\x1F\x7F]//g' file.txt
2017/09/15
更新mysql字段:
update news set pictureurl=substring_index(pictureurl,'/',-1);
訪問酒店方式:
根據hostid推算 web端口跟ssh端口 規則:
若是 hostid 爲1000 ~ 1500, web端口 = hostid + 4000,ssh端口 = hostid + 4500
若是 hostid 大於2000, web端口 = hostid + 10000,ssh端口 = hostid + 20000
登陸的IP:192.168.88.80
sunboss的登陸帳號密碼,srmd sykj201609
ssh登陸帳號密碼,srmd srmd@sunlight@)!)
sed刪除空行:
sed -i '/^$/d' /usr/local/sunlight/conf/sunaudit.conf
vms_config.ini 增長配置:mp2pIp=管理口物理IP
gnm_config.ini 增長配置:mp2pIp=管理口邏輯IP
gslb_config.ini 增長配置:mp2pIp=管理口邏輯IP
nm_config.ini 增長配置:mp2pIp=管理口邏輯IP
2017/09/18
運營商深圳廣信管理服務器 200
運營商廣西南寧電信管理服務器 201
運營商河南聯通管理服務器 202
運營商湖北電信管理服務器 203
2017/09/19
阿里雲sunlight-server測試服務器登陸方式
ip: 121.199.51.81
root/Sunlight2016
select date(logintime),count(distinct(stbid)) from stbentrancerecord group by (date(logintime));
2017/09/20
https://192.168.88.58/ui/#/host/vms
2017/10/04
zypper repo:
zypper addrepo -fc http://download.opensuse.org/repositories/openSUSE:/Backports:/SLE-12/standard/openSUSE:Backports:SLE-12.repo
zypper addrepo -fc http://download.opensuse.org/repositories/openSUSE:/Backports:/SLE-12-SP1/standard/openSUSE:Backports:SLE-12-SP1.repo
zypper addrepo -fc http://download.opensuse.org/repositories/openSUSE:/Backports:/SLE-12-SP2/standard/openSUSE:Backports:SLE-12-SP2.repo
以上三條命令都要執行;
/usr/local/dstat/dstat -tcdmnfls -T --innodb-io --innodb-buffer --innodb-ops --fs --top-bio --top-mem
出門旅遊,防騙:
http://blog.sina.com.cn/s/blog_538557480102x4ew.html?tj=1
2017/10/05
ls -alth 顯示文件和目錄大小;
或者使用: du -sh *
列出home目錄全部文件大小的總和命令爲:du -s /home或du -sh /home
好比查找文件名爲backup.sh文件的大小,命令爲:du -s backup.sh ,ls -lh backup.sh
2017/10/09
啓動mariadb集羣第一個節點: galera_new_cluster
2017/10/10
drop event test_event_bbtsss;
delimiter //
CREATE EVENT `test_event_bbtsss` ON SCHEDULE EVERY 15 SECOND STARTS '2019-01-01 00:00:07'
DO BEGIN
UPDATE terminal SET isonline=0 WHERE isonline=1 AND TIMESTAMPDIFF(SECOND, lastupdatetime, UTC_TIMESTAMP()) >= 85;
END //
delimiter ;
UPDATE mysql.event SET status = 'SLAVESIDE_DISABLED';
alter event xxxx DISABLE ON SLAVE;
shell - if 多條件判斷, [[ "$tt" == "y" || "$tt" == "Y" ]]
注意等號兩邊要有空格;
201七、十、12
查看進程運行級別;
systemctl list-unit-files | grep ntpd
默認狀況下,系統中的應用崩潰的時候會使得核心調用 systemd-coredump 來生成相關內存鏡像以及一些調試信息。
若是該應用運行時佔用的內存大,那麼這些調試信息會很快佔滿硬盤空間。應用崩潰是很常見的事情,但通常用戶並不須要去調試它,
多數人也不知道怎麼調試。因此禁用它是個很好的選擇。
alter event event_name enable/disable;
2017/10/13
將awk輸出的多行轉爲一行字符串,而後使用grep查找處理;
遇到這種狀況,可使用args參數:
netstat -nltp | awk 'NR>2 {print $7}' | xargs | grep vms
或:
netstat -nltp | awk 'NR>2 {print $7}' | xargs -n1 | grep vms
2017/10/16
keepalived fatal module ip_vs not found
keepalived安裝完成後,須要開啓ip4轉發功能;
Maxscale登錄mysql卡頓現象:
skip-name-resolve
2017/10/18
使用inotify監控/var/www/html目錄,沒有效果;
但修改成/var/www/html/app 卻有效
根據檢查,是由於下面的緣由:
-r參數: 遞歸目錄, inotify,rsync都有
2017/10/19
Vim快速移動光標至行首和行尾
須要按行快速移動光標時,可使用鍵盤上的編輯鍵Home,快速將光標移動至當前行的行首。
除此以外,也能夠在命令模式中使用快捷鍵"^"(即Shift+6)或0(數字0)。
若是要快速移動光標至當前行的行尾,可使用編輯鍵End。也能夠在命令模式中使用快捷鍵"$"(Shift+4)。
與快捷鍵"^"和0不一樣,快捷鍵"$"前能夠加上數字表示移動的行數。例如使用"1$"表示當前行的行尾,"2$"表示當前行的下一行的行尾。
sunaudit生成的spid都要從10000開始;
今天出了故障,在熊軍環境變成了1;
nginx配置文件中添加, $request_body 便可顯示請求參數;
2017/10/24
mysqldump -u root -p --skip-create-options --all-databases > migration.sql
skip-create-options保證了導入數據的時候,用的默認存儲引擎,這樣一來,原來的MyISAM也會順利轉換爲InnoDB。
在集羣沒法正常啓動的狀況下,可以使用以下命令:
第一個節點:
sudo -u mysql mysqld --wsrep-cluster-address='gcomm://'
後面的:
sudo -u mysql mysqld --wsrep-cluster-address='gcomm://192.168.88.48'
2017/10/25
根據pid找到進程:
ps -p 進程號
2017/10/27
查詢數據庫中event狀態;
select event_schema,event_name,status from information_schema.events;
2017/10/31
備份:
rm -rf /tmp/backup/mysqldb
innobackupex --defaults-file=[MY.CNF] --user=bkpuser --password=xxxx --galera-info --no-timestamp /tmp/backup/mysqldb/
innobackupex --apply-log --use-memory=2G /tmp/backup/mysqldb/
寫入腳本內,用以生成壓縮包:
sudo -u mysql innobackupex --user=$sql_user --password=$sql_passwd --socket=/var/lib/mysql/mysql.sock --no-timestamp --stream=tar "$sql_home/" | gzip > "$sql_home/${sql_backup_date}.tar.gz"
還原:
innobackupex --datadir=/var/lib/mysql --copy-back ./
chown mysql:mysql -R /var/lib/mysql
2017/10/31
發現 /var/lib/mysql/grastate.dat中,
seqno :-1
須要執行:
sudo -u mysql mysqld --wsrep-recover
ssh -p20203 192.168.88.80
2017/11/02
create user 'maxscale'@'%' identified by 'sunlight2017';
grant SELECT on mysql.user to 'maxscale'@'%';
GRANT SELECT ON mysql.db TO 'maxscale'@'%';
GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'%';
GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%';
grant REPLICATION CLIENT on *.* to 'maxscale'@'%';
2017/11/03
update imageauditrecord set imageurl=replace(imageurl,"182.247.239.156","192.168.88.168");
1. 解決陝西數據庫集羣的問題;
2. 出一個Checklist,對數據庫集羣作詳細檢查;
3. 作好trouble-shooting工做,將常見問題整理成冊;
4. 文件同步功能,觸發後若是因爲網絡緣由沒有執行成功,如何重試?
6. 集羣環境測試很重要!
7. 須要測試當掉進程和網卡,其餘節點的運行狀況;
8. 向數據庫集羣循環不斷寫入,隨機斷掉一個節點,須要測試故障狀況下集羣運行情況;
2017/11/04
ctrl+a:光標移到行首。
ctrl+e:光標移到行尾。
2017/11/05
grep -w pattern files:只匹配整個單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
sys.path是python的搜索模塊的路徑集,是一個list
能夠在python 環境下使用sys.path.append(path)添加相關的路徑,但在退出python環境後本身添加的路徑就會自動消失了!
shell根據全路徑獲取目錄:
if [ ! -d ${log%/*} ];then
mkdir -p ${log%/*}
fi
keepalived notify_master 後面的腳本不執行,緣由: 目標執行腳本須要有可執行權限;
2017/11/07
子進程不能export出變量影響父進程的環境,好比,寫一個shell腳本,使用sh命令執行,裏面的變量是沒法在當前環境echo出來的;
但使用source卻能夠,由於沒有子進程產生,此時腳本中的export命令將會影響父進程的環境;
2017//11/08
1. keepalived notify_master 後面的腳本不執行,緣由: 目標執行腳本須要有可執行權限;
2017/11/16
陝西歡迎頁不能建立:
緣由:沒有安裝app!
歡迎頁建立要用到sagent
2017/11/17
運營商爬蟲已經合併進 2.0.2.005 在app裏面
2017/12/03
如何刪除大小爲0的文件
find . -size 0 -exec rm {} \;或find . -size 0 -exec rm -i {} \;
2017/12/15
SLES12SP2查看gnome版本號:
gnome-shell --version
2017/12/16
SLES12SP2安裝完成後,若是開啓了桌面(gnome-shell進程有內存溢出的bug),
可執行 init 3 關閉桌面
2017/12/18
shell腳本中使用awk統計單列數據和:
awk '{sum += $1};END {print sum}' test
2017/12/19
雲平臺擴展LVM空間命令:
pvcreate /dev/xvdb1
vgextend VG /dev/xvdb1
lvresize -L 100G /dev/VG/LV-content
resize2fs /dev/mapper/VG-LV--content
lvresize -L 100G /dev/VG/LV-mysql
resize2fs /dev/mapper/VG-LV--mysql
lvresize -L 50G /dev/VG/LV-weedfs
resize2fs /dev/mapper/VG-LV--weedfs
lvresize -L 50G /dev/VG/LV-log
resize2fs /dev/mapper/VG-LV--log
lvresize -L 100G /dev/VG/LV-home
resize2fs /dev/mapper/VG-LV--home
lvresize -L 50G /dev/VG/LV-www
resize2fs /dev/mapper/VG-LV--www
lvresize -L 50G /dev/VG/LV-opt
resize2fs /dev/mapper/VG-LV--opt
---------------------------------------------------------------------------
lvm縮減空間:
umount /dev/mapper/sunlight_vg-lv_docker
e2fsck -f /dev/mapper/sunlight_vg-lv_docker
resize2fs /dev/mapper/sunlight_vg-lv_docker 1G
lvreduce -L 1G /dev/mapper/sunlight_vg-lv_docker
mount /dev/mapper/sunlight_vg-lv_docker /var/lib/docker
2017/12/27
date命令,獲取最近幾天的日期:
date +"%Y%m%d" -d "+n days" 今天的後n天日期
grep -A :顯示匹配行和以後的幾行
簡單翻譯就是,-A -B -C 後面都跟阿拉伯數字,-A是顯示匹配後和它後面的n行。-B是顯示匹配行和它前面的n行。-C是匹配行和它先後各n行。
整體來講,-C覆蓋面最大。用它保險些。哈哈。這3個開關都是關於匹配行的上下文的(context)。
2).
Shell命令獲取文本文件指定行數
從第3000行開始,顯示1000行。即顯示3000~3999行
cat filename | tail -n +3000 | head -n 1000
顯示1000行到3000行
cat filename| head -n 3000 | tail -n +1000
*注意兩種方法的順序
分解:
tail -n 1000:顯示最後1000行
tail -n +1000:從1000行開始顯示,顯示1000行之後的
head -n 1000:顯示前面1000行
用sed命令
sed -n '5,10p' filename 這樣你就能夠只查看文件的第5行到第10行
3).在生成log日誌時,必定要考慮日誌文件大小,日久天長
4).
邊緣節點: edge -d n2nedge0 -a 10.0.0.12 -c n2nedge -k sunlight-tech.com -l ip:11000 -M 1200
中心節點: supernode -l 11000
5).
保留20個文件,其他刪除
find /home/mysql -name "*.tar.gz" | xargs ls -lt | awk 'NR > 20 {print $9}' | xargs rm -rf
6).
find 搜索目錄,排除自身:
find /home/weedfs/ -not -path /home/weedfs/ -type d -exec rm -rf {} \;
7).
對目錄來講x 可執行權限就是用戶擁有進入該目錄、複製其中文件的權限。
對於文件的rwx比較好理解,對於目錄來講具備r權限的身份能夠利用ls查看該目錄下的文件名列表,不能查看文件的詳細信息,
具備x權限的身份能夠利用cd進入該目錄做爲本身的工做目錄,在這個目錄中,你能夠訪問、修改你有權限的文件。
因此對於目錄來講,有r權限沒有x權限是沒法進入目錄的,只有r權限,不開放x權限基本沒有什麼意義,因此須要讀取文件夾時最好將x權限也加上。
8).
tcpdump 抓包:
tcpdump -i eth0 -s 0 dst host 172.16.50.38 -w ./dump.cap
9).
壓縮命令:
tar -zcvPf www.tar.gz -C /var/ www (注意www前有空格)
解壓:
tar -zxvf www.tar.gz (解壓到當前目錄)
tar -zxvf www.tar.gz -C /var/www (解壓到指定目錄)
解壓包中的部分目錄到指定目錄:
tar -zxv -C /var/tmp -f www.tar.gz www/html/ihotel_hd_01
10).
去掉字符串中的空格:
$(echo $2 | sed s/[[:space:]]//g)
11).
loginctl命令用於查看當前登陸的用戶。
# 列出當前session
$ loginctl list-sessions
# 列出當前登陸用戶
$ loginctl list-users
# 列出顯示指定用戶的信息
$ loginctl show-user ruanyf
12).
向文件最後一行後,插入空行;
sed -i '$G' file
13).
linux shell中判斷目錄是否爲空
#!/bin/sh
##方法一 判斷輸出字符數統計爲0
is_empty_dir(){
return `ls -A $1|wc -w`
}
##方法二 判斷輸出string爲空
#is_empty_dir(){
# return $[ -z `ls -A $1` ]
#}
if is_empty_dir $1
then
echo " $1 is empty"
else
echo " $1 is not empty"
fi
14).
壓縮目錄:
tar -zcvf www.tar.gz /var/www
解壓縮:
tar -zxvf www.tar.gz -C / var (var前面有空格)
15).
curl命令結果不顯示統計信息% Total % Received %
-----使用curl的-s 選項便可
16).
將shell命令執行結果再處理,避免出現子進程的方法是:
while read line
do
done<< EOF
`commdon`
EOF
17).
wsrep_string=$(mysql -u${sp_mysqld_user} $pwd_string -e "show status like 'wsrep_%';")
cluster_status=$(echo "$wsrep_string" | grep "wsrep_cluster_status" | cut -f 2)
18).
#將某命令的輸出結果賦值給一個變量 a#若是使用 echo $a 輸出變量,則變量中的 換行都會被忽略掉,全部內容輸出到一行#而使用 echo "$a" 可正常輸出變量中的換行