系统操作注意事项

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 &

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 &

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.

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-stable

rpm --import https://storebits.docker.com/ee/sles/sub-2bf76308-3675-49bc-9eca-88ac9ca0d356/gpg

11.

1)HAProxy对于后端服务器一直在做健康检测(就算请求没过来的时候也会做健康检查):
后端机器故障发生在请求还没到来的时候,haproxy会将这台故障机切掉,但如果后端机器故障发生在请求到达期间,那么前端访问会有异常。也就是说HAProxy会把请求转到后端的这台故障机上,并经过多次探测后才会把这台机器切掉,并把请求发给其他正常的后端机,这势必会造成一小段时间内前端访问失败。
2)Nginx对于后端的服务器没有一直在做健康检测:
后端机器发生故障,在请求过来的时候,分发还是会正常进行分发,只是请求不到数据的时候,它会再转向好的后端机器进行请求,直到请求正常为止。也就是说Nginx请求转到后端一台不成功的机器的话,还会再转向另外一台服务器,这对前端访问没有什么影响。
3)因此,如果有用HAProxy做为前端负载均衡的话 ,如果后端服务器要维护,在高并发的情况,肯定是会影响用户的。但如果是Nginx做为前端负载均衡的话,只要并发撑得住,后端切掉几台不会影响到用户。

12.
number_format()自带千分位分隔符,用它处理后的数字插入数据库会出错,
可使用第四个参数,把千分位设置为空。

13.
递归函数,如何返回?

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


2017、09、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" ]]
注意等号两边要有空格;

2017、10、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天日期  

 date  +"%Y%m%d" -d  "-n days"          今天的前n天日期
 
2018/01/07
 
在nginx配置文件中添加:
 
  autoindex on;
 
浏览器访问时,才能展示web目录和文件;
 
 2018/01/12
客户端向web目录发请求如("/"),如果目录下没有定义的index文件(index.htm, index.php等),会产生403错误;
 
2018/01/23
获取字符串长度的方法:
1). echo ${#string}
2). echo $string | wc -L
 
2018/02/02
判断一台服务器是否支持虚拟化:
egrep '(vmx|svm)' /proc/cpuinfo
 
2018/06/26

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" 可正常输出变量中的换行

posted on 2017-12-14 11:43  天涯飞鸿  阅读(2283)  评论(0编辑  收藏  举报

导航