curl命令-网站如果3次不是200或301则报警
curl -o /dev/null -s -w "%{http_code}" baidu.com
-k/--insecure 允许不使用证书到SSL站点
-H/--header 自定义头信息传递给服务器
-I/--head 只显示请求头信息
-w/--write-out [format] 什么输出完成后
-s/--silent 静默模式。不输出任何东西
-o/--output 把输出写到该文件中
linux正则
参考: http://blog.csdn.net/Hello_Hwc/article/details/40017833
- 基本
. 匹配任何单个字符
* 前面出现0个或者多个
^ 以..开始
$ 以..结束
- 举个例子
china : 匹配此行中任意位置有china字符的行
^china : 匹配此以china开关的行
china$ : 匹配以china结尾的行
^china$ : 匹配仅有china五个字符的行
[Cc]hina : 匹配含有China或china的行
Ch.na : 匹配包含Ch两字母并且其后紧跟一个任意字符之后又有na两个字符的行
Ch.*na : 匹配一行中含Ch字符,并且其后跟0个或者多个字符,再继续跟na两字符
- 扩展正则
? : 匹配前面正则表达式的零个或一个扩展
+ : 匹配前面正则表达式的一个或多个扩展
{n,m}: 前面出现1个或2个或3个
| : 匹配|符号前或后的正则表达式
( ) : 匹配方括号括起来的正则表达式群
grep
- 参数
-n, --line-number
-i, --ignore-case 不区分大小写
-r, --recursive 按照目录
-o, --only-matching 只显示匹配行中匹配正则表达式的那部分
-v, --invert-match 排除
-c, --count 统计url出现次数
grep -nr
grep -oP
- 过滤ip
192.168.100.100
ifconfig|grep -oP "([0-9]{1,3}.){3}[0-9]{1,3}"
- 过滤邮箱
cat >>tmp.txt<<EOF
iher-_@qq.com
hello
EOF
cat tmp.txt|grep -oP "[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z]+)+"
- 统计baidu关键字的url在这个大文件中出现的次数
$ cat >file.txt<<EOF
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
162.12.0.123
"123"
123""123
njuhwc@163.com
njuhwc@gmil.com 123
www.baidu.com
tieba.baidu.com
www.google.com
www.baidu.com/search/index
EOF
grep -cn ".*baidu.com.*" file.txt
3
bash自动补全
yum install bash-com* -y
我在dokcer命令tab可以补全了
nginx json日志格式标准版
参考: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/configmap.md
log-format-upstream: '{ "time": "$time_iso8601", "remote_addr": "$proxy_protocol_addr",
"x-forward-for": "$proxy_add_x_forwarded_for", "request_id": "$request_id", "remote_user":
"$remote_user", "bytes_sent": $bytes_sent, "request_time": $request_time, "status":
$status, "vhost": "$host", "request_proto": "$server_protocol", "path": "$uri",
"request_query": "$args", "request_length": $request_length, "duration": $request_time,
"method": "$request_method", "http_referrer": "$http_referer", "http_user_agent":
"$http_user_agent" }'
elk启动
nohup /bin/su - elk -c "/usr/local/elasticsearch/bin/elasticsearch" > /data/es/es-start.log 2>&1 &
nohup /bin/su - elk -c "/usr/local/kibana/bin/kibana" > /data/es/kibana-start.log 2>&1 &
nohup "/usr/local/logstash/bin/logstash -f /data/es/conf/logstash/logstash.conf" > /data/es/logstash-start.log 2>&1 &
- logstash
/data/home/user00/logstash/bin/logstash -f /data/home/user00/logstash/conf/index.conf -l /data/home/user00/logstash/logs/logstash.log &
/usr/local/logstash/bin/logstash -f logstash.yaml --config.reload.automatic
curl -XDELETE http://192.168.100.204:9200/.monitoring-kibana-6-2017.10.23
健康:
http://192.168.100.204:9200/_cat/health?v
节点:
http://192.168.100.204:9200/_cat/nodes?v
查看index:
http://192.168.100.204:9200/_cat/indices?v
修改网卡名字
vim /etc/udev/rules.d/70-persistent-net.rules
vim /etc/sysconfig/network-scripts/ifcfg-eth0
sshfs挂载(实现nfs效果)
- 仅需客户端配置(已做客户端sshkey无密访问服务端)
yum install -y sshfs
挂载
sshfs -o allow_other,transform_symlinks root@192.168.14.133:/data /data
卸载
fusermount -u /data
参考: https://www.91yun.co/archives/8731
我在logging模块里看到的这个注释
#---------------------------------------------------------------------------
# Configuration classes and functions
#---------------------------------------------------------------------------
python搜路径
起因是有人问怎么把函数全局化,不用import即可随处调用
os.getcwd() #当前py所在目录
b.__file__ #这个模块的路径
os.__module__ #这个函数在哪个模块
参考:http://blog.csdn.net/l_b_yuan/article/details/52260646
os.path.abspath(path) #返回绝对路径
os.path.split(path #将path分割成目录和文件名二元组返回
os.path.dirname(path) #返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) #返回path最后的文件名
os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) #如果path是绝对路径,返回True
os.path.isfile(path) #如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) #如果path是一个存在的目录,则返回True。否则返回False
os.path.getatime(path) #返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间
s.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
>>> os.path.join('c:\', 'csv', 'test.csv')
'c:\csv\test.csv'
>>> os.path.join('windows emp', 'c:\', 'csv', 'test.csv')
'c:\csv\test.csv'
>>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')
'/home/aa/bb/c'
python env 和 vscode配置
pip install virtualenv
pip install virtualenvwrapper
pip install virtualenvwrapper-win
mkvirtualenv --python==C:Python27python.exe py27env
exit
mkvirtualenv --python==C:Python34python.exe py34env
workon
{
"workbench.colorTheme": "Solarized Light",
"window.zoomLevel": 1,
"window.menuBarVisibility": "default",
"editor.wordWrap": "on",
"editor.fontSize": 16,
"files.autoSave": "afterDelay",
"terminal.integrated.shell.windows": "C:\Program Files\Git\bin\bash.exe",
"editor.rulers": [80,120]
}
env配置文件
• ~/.bash_profile:用户每次登录时执行
• ~/.bashrc:每次进入新的Bash环境时执行
• ~/.bash_logout:用户每次退出登录时执行
sedmail发邮件配置
yum install sendmail -y
cat >>/etc/mail.rc<<EOF
set from=xxx@tt.com
set smtp=smtp.exmail.qq.com
set smtp-auth-user=xxx@tt.com
set smtp-auth-password=123456
set smtp-auth=login
EOF
source /etc/mail.rc
- 发消息
echo "test"| mail -s "邮件标题" iher@foxmail.com
- 发文件
mail -s "邮件标题" iher@foxmail.com < /etc/passwd
- 发附件
mail -s "邮件标题" -a /var/log/messages iher@Foxmail.com < /etc/passwd
- 邮件相关目录
C6 postfix /var/spool/postfix/maildrop
C5 sedmail /var/spool/clientmqueue
注: centos6.5已经不自动安装sendmail了所以没必要走这一步优化
- 写脚本自动清理邮箱
mkdir -p /server/scripts
cat /root/shell/spool_clean.sh
#!/bin/sh
find/var/spool/clientmqueue/-type f -mtime +30|xargs rm-f
echo '*/30 * * * * /bin/sh /server/scripts/spool_clean.sh >/dev/null 2>&1'>>/var/spool/cron/root
locale字符集-面试
- 查本地支持的所有字符集
# locale -a
- 查当前使用的字符集
locale #调取了/etc/sysconfig/i18n
- 系统默认字符集:
export LANG='zh_CN.UTF-8'
监控网卡实时流量
- 监控网卡流量历史流量
yum install sysstat
sar -n DEV 1 5 #1s监控1次,共监控5次.
sar -n DEV (-n network)
watch more /proc/net/dev
find干掉超过10天的
- mtime 10天内 10天外
find . -mtime +10 -exec rm -rf {} ;
find . -mtime +10|xargs rm -f
测试udp端口是否通-面试
$ nc -vuz 192.168.6.6 53
Connection to 192.168.6.6 53 port [udp/domain] succeeded!
实际使用时可以只用-u参数,-u代表udp协议 ,-v代表详细模式,-z代表只监测端口不发送数据。
使用nc+tar传文件
- client发交互式到服务器的console
nc -l -u 8021 --server #可以配置tcpdump -i eth0 port 8021 -nnv抓包
nc -u 192.168.6.52 8021 --client #交互式发送消息
- client发文件到服务端console
server: nc -l -u 8021
client: nc -u 192.168.6.52 8021 < /etc/hosts
- tar+nc传文件
server: tar -cf - /home/database | nc -l 5677 #将/home/database文件
client: nc 192.168.6.52 5677 | tar -xf - #传到client的当前目录
生成密码:
openssl rand -hex 8
$mkpasswd -l 16 -s 2
3Hte^bd-pkylSbf7
echo "ansible"|passwd --stdin ansible #centos7改用户密码
fstab挂载
- fstab挂载硬盘
cat /etc/fstab
需挂载的设备 挂载点 fs类型 参数 备份 检查
/dev/mapper/centos-data /data xfs defaults 0 0
- nfs挂载(centos7放fstab)
192.168.8.68:/data/backup/no75/confluence/data /data/confluence/ nfs defaults 0 0
- nfs挂载(centos6放/etc/rc.local里即可)
/usr/bin/mount -t nfs 192.168.8.68:/data/owncloud /data/owncloud-192.168.8.68
- nfs服务端设置:
/data/backup/no75/confluence/data 192.168.8.0/24(rw,sync,no_root_squash)
- (磁盘扩容)关于tmpfs空间满,会影响其中的服务使用吗
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 32G 1.3G 29G 5% /
tmpfs 16G 16G 0 100% /dev/shm
mount -o remount,size=18G /dev/shm
- 只读mount
Mount the file system and make it writeable
mount -uw /
Make the filesystem read only again.
mount -ur /
date命令小结
- 前一天日期
date +%Y-%m-%d~%H-%M-%S -d "-1 day"
date "+%Y-%m-%d %H-%M-%S" -d "-1 day"
- 压缩带日期
tar zcvf etc_$(date +%F -d "-1 day").tar.gz /etc/
系统时间优化
- 时区校准
rm -rf /etc/localtime && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ntpdate ntp1.aliyun.com
- 设置同步时间
/user/sbin/ntpdate ntp1.aliyun.com
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2 >&1' >>/var/spool/cron/root
- 手动修改时间
date -s "2016/06/11 22:50"
过滤网卡ip
ifconfig eth0|grep -oP "([0-9]{1,3}.){3}[0-9]{1,3}"|sed -n '1p'
ifconfig|sed -n '2p'|sed -r 's#^.*addr:(.*) Bcast.*$#1#g'
ifconfig|sed -n '2p'|awk -F':' '{print $2}'|awk '{print $1}'
回车擦除^H
echo "stty erase ^H" >>/root/.bash_profile
source /root/.bash_profile
centos7安装nslookup ifconfig
How to install dig, host, and nslookup – bind-utils on CentOS:
yum install bind-utils -y [c6使用nslookup]
yum install net-tools -y [c7使用ifconfig]
selinux优化
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
getenforce
/etc/init.d/iptables stop
文件描述符优化
ulimit -SHn 65535
echo '* - nofile 65536' >>/etc/security/limits.conf
echo "* soft nproc 65535" >>/etc/security/limits.conf
echo "* hard nproc 65535" >>/etc/security/limits.conf
echo "* soft nofile 65535" >>/etc/security/limits.conf
echo "* hard nofile 65535" >>/etc/security/limits.conf
清除系统版本banner
> /etc/issuse
>/etc/redhat-release
添加普通用户并进行sudo授权管理
$ useradd sunsky
$ echo "123456"|passwd --stdin sunsky&&history –c
$ visudo # 99gg
在root ALL=(ALL) ALL #此行下,添加如下内容
sunsky ALL=(ALL) ALL
lanny ALL=(ALL) ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom #仅允许他执行这些命令
ssh慢优化
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
sed -i 's##UseDNS yes#UseDNS no#g' /etc/ssh/sshd_config
sed -i 's#GSSAPIAuthentication yes#GSSAPIAuthentication no#g' /etc/ssh/sshd_config
/etc/init.d/sshd restart
Port 22345
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
ListenAddress 192.168.138.24
GSSAPIAuthentication no
crt设置超时
export TMOUT=10
echo "export TMOUT=10" >>/etc/profile
source /etc/profile
vim安装优化
yum -y install vim-enhanced
cat >>/etc/vimrc<<a
set nu
set cursorline
set nobackup
set ruler
set autoindent
set vb t_vb=
set ts=4
set expandtab
a
. /etc/vimrc
rsync安装配置
- rsync server配置(rpm -qa|grep rsync):
cat /usr/local/rsync/rsync.conf
uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /code/pp100web/target/ROOT
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.14.132
list = false
uid = root
gid = root
auth users = webuser
secrets file = /usr/local/rsync/rsync.passwd
- 重启rsync
kill -HUP `cat /var/run/rsyncd.pid`
/usr/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf
ps -ef|grep rsync
- 配置允许同步的的客户端
vim /usr/local/rsync/rsync.conf
hosts allow = 192.168.14.132,192.168.14.133
注意:密码文件统一600,且普通用户为谁,属主即为谁.
java环境变量(附带tomcat)
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_BASE="/data/tomcat"
export PATH=/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.7.0_45/bin:/root/bin:/usr/local/jdk1.7.0_45/bin:/root/bin
换源&安装常用软件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all
yum makecache
yum install lrzsz ntpdate sysstat dos2unix wget telnet tree -y
添加定时任务
crontab -l
*/5 * * * * /usr/sbin/ntpdate times.windows.com >/dev/null 2>&1
优化退格键
stty erase "^H" #追加到/etc/profile
优化history:
export HISTTIMEFORMAT="%F %T `whoami` "
echo "export HISTTIMEFORMAT="%F %T `whoami` "" >> /etc/profile
优化message:格式
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";}'
过滤日志
cat /etc/salt/master |grep -v "#" | sed '/^$/d'
grep -nir
-i 不区分大小写
-n 显示行号
-r 查找目录, grep -r 'xx' .
kill服务
/usr/bin/killall -HUP syslogd
/bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
禁止ping
echo "net.ipv4.icmp_echo_ignore_all=1">>/etc/sysctl.conf
tail -1 /etc/sysctl.conf
sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward #这样好处可以tab
sysctl -w net.ipv4.ip_forward=1 #好像没写到/etc/sysctl.conf里
sed 在某行(指具体行号)前或后加一行内容
sed -i 'N;4addpdf' a.txt
sed -i 'N;4ieepdf' a.txt
sed -i 'N;4a44444444444444444444444444testt' 1.log在第四行后加一行
http://www.361way.com/sed-process-lines/2263.html
关闭bell:[需reboot]
sed -i 's#^#set bell-style none#set bell-style none#g' /etc/inputrc
echo "modprobe -r pcspkr" > /etc/modprobe.d/blacklist
关掉ctrl+alt+delete关机
cp /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bak
sed -i 's#exec /sbin/shutdown -r now "Control-Alt-Deletepressed"##exec /sbin/shutdown -r now "Control-Alt-Deletepressed"#g'
yum groupinstall base -y
yum groupinstall core -y
yum groupinstall development libs -y
yum groupinstall development tools -y
echo高亮显示
echo -e "