ps aux|grep pid
top -Hp pid #java进程线程监控(记录最耗资源的pid)
jstack pid > pid.log # java进程堆栈(多打几次堆栈)
jmap -heap pid #查看内存情况
ps -T -p pid|grep -v PID|wc -l #查看线程数及spid
pstree -p pid|wc -l
ps -xH |grep pid|wc -l
————
查看压缩包文件列表:
tar tvf xxx.tar.gz
unzip -v xxx.zip
W:下一单词(仅以空格区分)开头
w:下一单词开头
E:下一单词(仅以空格区分)结尾
e:下一单词结尾
B:前一单词开头(仅以空格区分)
b:前一单词开头
R:替换模式
r:替换字符(只能一次替换一个字符,且仅能替换一次)
u:撤销一次
ctrl+r:反撤销一次
:vsp/:sp filename 单屏展示多文件(ctrl+w切换光标指向的文件)
set -o vi
0.按esc进入vi
- j 或者 k 就可以上下翻阅命令历史,而不必用上下键;
- 输入 / 可搜索历史命令;
- 输入^定位行首,$定位到行尾;
- 按 i 键进入 插入模式(insert mode) 之后,才可以继续打字之类的。
set -o vi
0.按esc进入vi
1.按F6r7(命令含义:F6向左找到第一个6,r7将找到的6替换为7)
vim /etc/cron.daily/tmpwatch
-X ‘/tmp/tomcat.*’ 10d /tmp 删除/tmp下10天前新建的,没有修改访问过得文件。
-u, --atime 基于访问时间来删除文件,默认的。
-m, --mtime 基于修改时间来删除文件。
-c, --ctime 基于创建时间来删除文件,对于目录,基于mtime。
-M, --dirmtime 删除目录基于目录的修改时间而不是访问时间。
-a, --all 删除所有的文件类型,不只是普通文件,符号链接和目录。
-d, --nodirs 不尝试删除目录,即使是空目录。
-d, --nosymlinks 不尝试删除符号链接。
-f, --force 强制删除。
-q, --quiet 只报告错误信息。
-s, --fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。
-t, --test 仅作测试,并不真的删除文件或目录。
-U, --exclude-user=user 不删除属于谁的文件。
-v, --verbose 打印详细信息。
-x, --exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。
-X, --exclude-pattern=pattern 排除某规则下的路径。
在 ~/.bashrc 内加上这行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』来立即生效
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!
==========================
#!/bin/sh
expect << END
set timeout -1
spawn xxx/bin/clickhouse-client
expect "Connected to clickhouse server"
send "show databases;\n"
send "quit\n"
log_file xxx/bin/1.log
expect eof
END
==========================
ss -lnp | grep 9092跟踪ip连接和sockets(比netstat快)
SELECT CONCAT(ROUND(SUM(data_length)/(102410241024), 2), ' GB') AS 'Tables Data Size' FROM information_schema.TABLES WHERE table_schema='metricdata' and table_name='metric_data_entity_1';
关闭selinux防火墙
永久关闭方法:
vi /etc/sysconfig/selinux
将enforcing修改为disabled
重启服务器
临时关闭方法:reboot后恢复原来配置
setenforce 0
getenforce
jar -cvfM0 project.jar ./
-c 创建jar包
-v 显示过程信息
-f
-M
-0 这个是阿拉伯数字,只打包不压缩的意思
解压project.jar
jar -xvf project.jar
tail -n +2 file 从第2个开始显示
tail -n 2 file 显示最后2个
head -n 2 file 显示前2行
head -n -2 file 显示前出最后2行的所有东西
vim -on/-On file1 file2 (分屏)
:vsp/sp file
ctrl + w +w/k/j/h/i
配置主服务器
- vim /etc/my.cnf
- server-id=1
- log-bin=mysql-bin
- binlog-ignore-db=mysql #不同步mysql系统数据库
- service mysql restart #重启MySQL
- show variables like 'server_id'; #查看server-id的值是否为1
- show master status; #查看主服务器
配置从服务器
- vim /etc/my.cnf #编辑配置文件
- server-id=2
- log-bin=mysql-bin
- replicate-ignore-db=mysql #不同步mysql系统数据库
- read_only #设置数据库只读
- service mysql restart #重启MySQL
- show variables like 'server_id'; #查看server-id的值
- stop slave;
- change master to master_host='172.21.56.24',master_user='root',master_password='10jqka',master_log_file='mysql-bin.000001',master_log_pos=120; #执行同步语句
- start slave;
- SHOW SLAVE STATUS\G; #查看slave同步信息
mysqlbinlog --start-datetime="2016-09-13 0:00:00" --stop-datetime="2016-09-13 09:25:00" mysql-bin.000032 > 0913.binlog
mysqlbinlog --no-defaults --start-date='2016-09-21 00:00:00' --stop-date='2016-09-21 14:20:00' mysql-bin.000032 > 0921.txt
抓包:tcpdump -i br0 port 8092 -s 0 -vv -w /tmp/tcpdump421-2.txt
抓包:tcpdump -i br0 host 111.111.111.111 and port 8092 -s 0 -vv -w /tmp/tcpdump421-2.txt
ps -ef|grep hello|grep -v grep |awk '{print "kill -9 " $2}'|bash
tr "\n" "\0" #将换行替换为NUll空字符
shell浮点数运算:
方法一:
[chengmo@centos5 ~]c=(echo "5.01-42.0"|bc)
[chengmo@centos5 ~]echoc
-2.99
方法二:
[chengmo@centos5 ~]c=(awk 'BEGIN{print 7.015-4.01 }')
[chengmo@centos5 ~]echoc
31.04
zookeeper/zoo.cfg:
tickTime:指定了ZooKeeper的基本时间单位(以毫秒为单位);
initLimit:指定了启动zookeeper时,zookeeper实例中的随从实例同步到领导实例的初始化连接时间限制,超出时间限制则连接失败(以tickTime为时间单位);
syncLimit:指定了zookeeper正常运行时,主从节点之间同步数据的时间限制,若超过这个时间限制,那么随从实例将会被丢弃;
dataDir:zookeeper存放数据的目录;
clientPort:用于连接客户端的端口。
nc:
-g<网关> 设置路由器跃程通信网关,最丢哦可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 详细输出--用两个-v可得到更详细的内容
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
1、相互发消息:
server:
[root@0-144 ~]# nc -v -l 1234
Connection from 192.168.230.101 port 1234 [tcp/search-agent] accepted
client
server
client:
[quants@quants-pre ~]$ nc -v 192.168.230.37 1234
Connection to 192.168.230.37 1234 port [tcp/search-agent] succeeded!
client
server
2.传文件:
server:[root@0-144 ~]# nc -l 1234 > kill.log (接收端)
client:[quants@quants-pre ~]nc 192.168.230.37 1234 < kill.sh 3.拷贝目录: server:[root@0-144 ~]# nc -l 1234 |tar xzvf - (接收端) client:[quants@quants-pre ~] tar czvf - testhq/|nc 192.168.230.37 1234
4.端口扫描
[quants@quants-pre ~]$ nc -v -w 1 127.0.0.1 -z 6378-6380
nc: connect to 127.0.0.1 port 6378 (tcp) failed: Connection refused
Connection to 127.0.0.1 6379 port [tcp/*] succeeded!
nc: connect to 127.0.0.1 port 6380 (tcp) failed: Connection refused
5、保存Web页面
while true; do nc -l -p 80 -q 1 < somepage.html; done
6、模拟HTTP Headers
[quants@quants-pre ~]$ nc 192.168.230.37 80 (输入下面4行,连按2尺回车)
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
pip install mysqlclient
pip install MySQL-python
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy
报错:
checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library
安装MySQL-shared-5.6.22-1.linux_glibc.x86_64.rpm
su与su -区别:前者不切换shell(shell环境变量);后者用户和shell都切换了。
echo "select * from test.table2 ;"| /usr/local/mysql/bin/mysql -h127.0.0.1-uroot -p123456 > /data/bestlovesky.xls
mysql -uroot -p -e "select * from test.table2 " > /home/test.xls
启动 libvirtd 守护进程:libvirtd: relocation error: libvirtd: symbol dm_task_:解决方法
yum -y upgrade device-mapper-libs
[root@localhost network-scripts]# cat ifcfg-bro
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.215.52
NETMASK=255.255.0.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
[root@localhost network-scripts]# cat ifcfg-em1
DEVICE=em1
TYPE="Ethernet"
ONBOOT=yes
BRIDGE=br0
[root@localhost network-scripts]#
生成秘钥:
ssh-keygen -t rsa
cat 20538.pub >> .ssh/authorized_keys
最后文件: 20538 就是xshell使用的秘钥文件
linux免密scp 从A拷贝到B:(还要关闭selinux)
1.A:ssh-keygen -t rsa
2.将 A:/root/.ssh/id_rsa.pub拷贝到B: /root/.ssh/
3.确认B上是否已有authorized_keys文件
4. 没有直接mv id_rsa.pub authorized_keys 若已有,则cat /root/.ssh/id_rsa.pub >> authorized_keys
free -g
参 数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。
-/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用。第二行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的
挂载新磁盘
1. 查看磁盘数目:fdisk -l
2. 对磁盘/dev/sdb 进行分区:fdisk /dev/sdb
3. m(列出菜单) p(列出该磁盘的分区列表)n(增加分区)
4. p(增加一个主分区)默认使用磁盘空间来作为分区空间
5. w(将分区写入磁盘)
6. 格式化分区为ext4格式:mkfs -t ext4 -c /dev/sdb1
7. fdisk -l 查看是否分区成功
8. 挂载新分区到存在的目录。
Linux LVM硬盘管理及LVM扩容
Linux系统中fdisk分区工具创建分区详解
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。
-
LV:也就是从VG中划分的逻辑分区
LVM创建、扩容
查看是否安装了lvm工具(fdisk):rpm –qa|grep lvm
LVM创建:
# 1、查看磁盘分区表 #fdisk -l
2、使用fdisk创建分区,根据设备文件的绝对路径(/dev/hda)进入分区管理
- first sylinder (28-255,default 28):28 #在扩展分区里建逻辑分区
- last cylinder ...(28-522,default 522):522 #柱面用尽,等于说只建一个逻辑分区
- l logical (5 or over) #建立逻辑分区
- p primary partition (1-4) #建立主分区
-
e extended #建立拓展分区
-
一定要指定分区的格式为8e,这是LVM的分区格式
3、创建PV
4、 创建VG
- 创建完成VG之后,才能从VG中划分一个LV。
5、创建LV
-
创建了一个名字为lvData,容量大小是100M的分区,其中:-L:指定LV的大小 -n:指定LV的名。Vo1Group00:表示从这个VG中划分LV;
6、LV格式化及挂载
- 下一步需要对LV进行格式化(使用mksf进行格式化操作),然后LV才能存储资料
- 将格式化后的LV分区挂载到指定的目录下,就可以像普通目录一样存储数据了
- 挂载之后,可以看到此LV的容量。
-
如果要在系统启动的时候启动LV,最好是将lvData写入fstab 文件中,如下所示:
- 使用Vim编辑器,打开/etc/fstab,在最后一行添加如图中所示,其中/dev/VolGroup00/lvData指定需要挂载的分区LV,/root/test指定要挂载的目录(挂载点),ext3分区文件系统格式,其它使用默认即可
LVM扩容
执行umount若提示磁盘忙,使用fuser找出将正在使用磁盘的程序并结束掉;
fuser -m -v /data #列出
fuser -m -v -i -k /data #列出并杀掉
一、首先创建一块新的分区:
fdisk /dev/hda
n
l #选择逻辑分区,如果没有,则首先创建扩展分区,然后再添加逻辑分区(硬盘:最多四个分区P-P-P-P或P-P-P-E)
#注:l是列出分区类型,以供我们设置相应分区的类型;
6 #分区号(从5开始),/dev/hda6
t 8e #分区类型8e表示LVM分区
w #写入分区表
partprobe #重读分区表
mkfs –t ext3 /dev/hda6 #格式化
partx /dev/hda #查看当前硬盘的分区表及使用情况
二、创建PV,扩容VG,LV
pvcreate /dev/hda6
vgdisplay #查看当前已经存在的VG信息,以存在VG:VolGroup00为例
vgextend VolGroup00 /dev/hda6 #扩展VolGroup00
lvdisplay #查看已经存在的LV信息,以存在LV:LogVol01为例
lvextend –L 1G /dev/VolGroup00/LogVol01 #扩展LV
resize2fs /dev/VolGroup00/LogVol01 #执行该重设大小,对于当前正在使用的LogVol01有效
df –h #查看挂载情况,已经扩容
[localrepo]
name=localrepo
baseurl=file:///kvm/package/
gpgcheck=0
enabled=1
linux设置环境变量
- 显示环境变量HOME:>echo $HOME
- 设置一个新的环境变量HELLO: >export HELLO="Hello!"
- 使用env显示所有环境变量:>env 或者 env |grep HELLO
- 使用set命令显示所有本地定义的Shell变量: >set 或者 set |grep HELLO
- 使用unset命令来清除环境变量: >unset HELLO
- 使用readonly命令设置只读变量(如果使用了readonly命令的话,变量就不可以被修改或清除了):
export TEST="Test..." (增加一个环境变量TEST)
readonly TEST (将环境变量TEST设为只读)
- 环境变量的设置位于/etc/profile文件:
也可以在里面直接加入:export PATH=$path:/path1:/path2:/pahtN - 永久生效:配置文件里加(/etc/profile | .bash_profile)修改后source命令生效
- 临时变量:使用export命令添加变量,这只对当前shell(BASH)生效,关闭再打开就失效
- 常用环境变量:
PATH 决定shell将到哪些目录下寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数(即history命令记录数)
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户的shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
ctrl+v --> select block(%) --> delete (x)
linux版本信息:
cat /etc/issue
lsb_release -a
linux内核版本信息:
cat /proc/version
uname -a/-r
jdk安装:
whereis java
which java (java执行路径)
echo $JAVA_HOME
echo $PATH
备注:如果是windows中,可以使用:
set java_home:查看JDK安装路径
java -version:查看JDK版本
rpm -qa|grep gcj //查看安装的jdk
rpm -qa|grep jdk //查看安装的jdk
rpm -e --nodeps xxxxx.xxx.xx //卸载
install:
mv xxxx.tar.gz /usr/local
vim /etc/profile:
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile
linux coredump
limits.conf设置
coredump :(生效:重新登录,不需要重启)
vim /etc/security/limits.conf
* soft core unlimited(on)/0(off)
本地网络环境中没有任何一台服务器可以直接访问远程服务器, 但是远程服务器可以反过来访问本地的某台服务器, 这样的话也能实现本地服务器去访问远程服务器的目的. 这就是反向代理.
-
ip1 ip2 ip3 (ip1为代理服务器,ip3要访问ip1:3306,但是只有ip1可以访问ip2,)
1、在ip1上建立反向代理:ssh -fCNR 13306:localhost:3306 root@ip2
(13306在ip2上,3306在ip1上,反向代理只有在sshd的GatewayPorts打开的时候才能监听在0.0.0.0)
2、在ip2上建立正向代理:ssh -fCNL :3306:localhost:13306 localhost
(表示接受来自任意机器的访问;3306就是其他服务器通过ip2:3306访问 ip1:3306)
3、在IP3上 telnet ip2 3306 就是访问ip1:3306- ssh -CNfR :8443:172.16.111.130:443 [email protected] /将443(远程)映射到8443(本地)/,反向代理只有在sshd的GatewayPorts打开的时候才能监听在0.0.0.0
-
/etc/ssh/sshd_config GatewayPorts yes
-c: 指定压缩所有数据
-N:不执行远程命令。只是转发端口
-f:后台运行ssh
-R:反向代理,指派远程上的 port 到本地地址上的 port。
-L:正向代理,1、ssh -fCNR 2280:localhost:80 Admin@代理serverip
2、server {
listen 80;
server_name your_domain; #域名设置必须跟家庭服务器上的一致
location / {
proxy_redirect off;
proxy_set_header Host host; proxy_set_header X-Real-IPremote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:2280;
}
}
3、这样就可以通过 代理serverip:80 访问远程的80端口web服务。
mysql死锁记录:
SHOW ENGINE INNODB STATUS\G
找到: LATEST DETECTED DEADLOCK
查看进程所打开的端口和文件:
lsof -p pid
arp -a //查看通信的机器
arp -d //清除缓存中的数据。也是删除IP和MAC绑定的项目。
#chkconfig: 2345 64 36
这里的64,就是启动的顺序值,36则是退出的顺序值,如果需要改变顺序,就在这里改。然后执行下面的命令:
#chkconfig --del servicename
#chkconfig --add servicename
#chkconfig servicename on
chkconfig --list redis
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
--
rdb备份redis
redis-cli save
fuser -m /dev/sda1 #显示所有使用sda1的进程
fuser -km /dev/sda1 #杀死所有使用sda1的进程
网关:协议转换器、网间连接器
子网掩码:将ip 划分为网络地址&主机地址(左:网络位,右:主机位;255.255.255.00000000,8个主机位)
设我们有一个网络:192.168.0.0/24(即子网掩码的前24位为1,255.255.255.0),我们需要两个子网,那么按照RFC950,应该使用/26而不是/25,得到两个可以使用的子网192.168.0.64和192.168.0.128
对于192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
对于192.168.0.0/26,网络地址是192.168.0.0,广播地址是192.168.0.63
对于192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
对于192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
对于192.168.0.192/26,网络地址是192.168.0.192,广播地址是192.168.0.255
标准分区
swap分区不选择挂载点
lvm文件系统类型、使用全部空间
生成lvm卷组
挂载/
继续添加/hxapp
剩余全部挂在到/hxdata
格式化磁盘&将修改写入磁盘
进入引导装载程序、选择安装介质
基本系统:兼容程序库,基本
开发:开发工具,服务器平台开发、附加开发
数据库:MySQL服务器、postgresql服务器
服务器:ftp、nfs、服务器平台、系统管理工具、网络基础设施
系统管理:系统管理
语言支持:中文支持
centos7防火墙:systemctl start firewalld
systemctl status firewalld或者 firewall-cmd --state
停止 systemctl disable firewalld
禁用 systemctl stop firewalld
一:使用 route 命令添加使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,
方法://添加到主机的路由# route add –host 192.168.1.11 dev eth0# route add –host 192.168.1.12 gw 192.168.1.1
//添加到网络的路由# route add –net 192.168.1.11 netmask 255.255.255.0 eth0# route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1# route add –net 192.168.1.0/24 eth1
//添加默认网关# route add default gw 192.168.2.1//删除路由# route del –host 192.168.1.11 dev eth0
二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加方法:
route add -net 192.168.3.0/24 dev eth0route add -net 192.168.2.0/24 gw 192.168.2.254
2.在/etc/sysconfig/network里添加到末尾方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)
any net 192.168.3.0/24 gw 192.168.3.254any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
4.开启 IP 转发:
# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)
查看系统加载了哪些模块:
lsmod | grep ipmi
mysql慢查询
mysqldumpslow
经常使用的参数:
-s,是order的顺序
al 平均锁定时间
ar 平均返回记录时间
at 平均查询时间(默认)
c 计数
l 锁定时间
r 返回记录
t 查询时间
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的 mysqldumpslow -t 10 -s t -g “left join” host-slow.log
1.查询CPU物理个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
1.查询CPU逻辑个数
cat /proc/cpuinfo |grep "processor"|wc -l
2.查询服务器型号
dmidecode | grep "Product Name"
或
dmidecode -s system-product-name
3.查看CPU几核
cat /proc/cpuinfo | grep physical | sort -n | uniq -c
4.查看CPU信息<型号>
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq
5.查看CPU运行位数
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep 'lm' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
6 .查看当前操作系统内核信息
uname -a
locate 使用updatedb命令更新系统数据库
nl命令
nl p.txt 带行号的显示打印
grep -o '[0-9]\\{2,3\\}:[0-9]\\{5\\}' p.txt
grep -o '[0-9]\\{2,3\\}:[0-9]\\{5\\}' p.txt|awk -F: '{print $2}'
读取文件的某几行
查看文件的第190~196行:sed -n '190,196p' a.txt
sed -n '1,2p' p.txt(可以显示行号)
查看某一行:sed -n '190,1p' a.txt
cat p.txt |cut -d ':' -f7 |cut -b 1-5
去重sort -u/uniq,排序sort
ps aux | grep -w 'Z'僵尸进程
共享read权限给其他用户(只读用户)
chmod +x /home/quants
chmod -R +r /home/quants
oracle:sqlplus username/passwd @server as sysdba|sysoper
将动态链接库所在目录名追加到动态链接库配置文件/etc/ld.so.conf中(能被系统共享,再次ldconfig不会被修改):
pwd >> /etc/ld.so.conf
ldconfig
ldconfig -p|grep libiconv
./configure 默认路径是/usr/local/lib --prefix=/usr/local/lib64 指定路径
make && make install
create .trash on all partition
vim /etc/profile
if [ "`whoami`" == "root" ]; then
for i in $(df -P |awk '/^\\/dev\\//{print $NF}')
do
if [ ! -d $i/.trash ]; then
mkdir -m 777 $i/.trash
touch $i/.trash/.log
chmod 666 $i/.trash/.log
fi
done
fi
if [ `uname` == Linux ]; then
grep -qE "^alias\\srm='delete" ~/.bash_profile || echo "alias rm='delete'" >> ~/.bash_profile
else
grep -qE ^alias.rm=\\'delete\\' /etc/profile || echo "alias rm='delete'" >> /etc/profile
fi
vim ~/.bash_profile 也可以非root,但用其他用户登录,就没有回收站功能
添加:alias rm='delete'
vim /bin/delete && chmod +x /bin/delete
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Usage: rm file1 [file2 file3....]"
fi
function logTrash() {
# /tmp/t.txt t.txt ./t.txt /tmp/tmp
partition=$1
file=$2
mark1="."
mark2="/"
if [ "$file" = ${file/$mark2} ]
then
fullpath="$(pwd)/$file"
elif [ "$file" != ${file/$mark1} ]
then
fullpath="$(pwd)${file/$mark1}"
else
fullpath="$file"
fi
echo $fullpath $3 >> ${partition}/.trash/.log
}
function realrm() {
echo -e "move the files to the trash."
for file in $@
do
if [ -f "$file" -o -d "$file" ]; then
now=`date +%Y%m%d_%H%M%S`
partition=`df -P ${file}|awk '/dev\\//{print $NF}'`
file=${file%/}
filename=${file##*/}
/bin/mv $file ${partition}/.trash/${filename}_${now}
[ $? -eq 0 ] && logTrash $partition $file $now
fi
done
}
realrm "$@"
sort
-k:按照多列进行排序(-k+num)
-r:相反的顺序
ps aux|grep m_|sort -k9r
flush tables with read lock;
unlock tables;
character_set_client、character_set_connection和character_set_results的字符集修改:my.cnf:
[mysqld]
init_connect='SET NAMES gbk'
character_set_client=gbk
虚拟机安装:
keymap: "`" :delete键
: "del":回车键
添加永久路由
添加服务
创建linux服务,步骤如下:
写服务启动脚本文件(后附例子)
修改脚本文件chmod 777 autoruntest
脚本文件拷贝到 /etc/rc.d/init.d/(/etc/init.d 是 rc.d/init.d的软连接)
chkconfig --add autoruntest 添加服务
重新启动(完成)
其中到了第三步后就可以使用service启动停止了,要自启动必须使用chkconfig 将服务添加到系统中。
date +"%Y%m%d" -d "+n days" 今天的后n天日期
date +"%Y%m%d" -d "-n days" 今天的前n天日期
date +"%Y%m" -d "-/+n months"
tcpdump tcp port 8003 and host 211.139.150.26 !192.168.205.38 -w t.pcap
tcpdump -r t.pcap 读取包
top -p pid 查看单个进程状态。
ssh 连接不上
vim /root/.ssh/known_hosts
删掉带ip的那一行。
32位lua
- vim /etc/profile
- export PATH="$PATH:/home/lua-5.1.4/src/"
or - ln -sf ?/lua /usr/bin/32lua
当用yum时出现多个库共存冲突时在命令上加上:
--setopt=protected_multilib=false
yum -y remove httpd
yum search png |grep png
yum list installed | grep glibc.i686...glibc.x86_64
rpm -ev ...
rpm -ivh --prefix= /opt/temp xxx.rpm
rpm -ivh --relocate /=/opt/temp xxx.rpm
iptables 限制ip访问
iptables -F
iptables -X
iptables -L -n
chkconfig | grep iptables
chkconfig iptables off
iptables -I INPUT -p tcp --dport 6379 -j DROP
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT
iptables -I INPUT -s 172.16.8.100 -p tcp --dport 6379 -j ACCEPT
iptables -I INPUT -s 172.16.8.1 -p tcp --dport 6379 -j ACCEPT
service iptables save ...... /etc/rc.d/init.d/iptables save
vim /etc/sysconfig/iptables
-A INPUT -s 172.16.8.1/32 -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -s 172.16.8.100/32 -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6379 -j DROP
指定组创建用户:useradd -d /home/yy -g quants yy
redis-cli -h 192.168.210.91 client list
- 安装curl开发包:yum install libcurl-devel
编码格式:vim /etc/sysconfig/i18n 或者 vim ~/.bash_profile
(export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK")
source /etc/sysconfig/i18n
lsb_release -a 查看centos版本
修改远程桌面最大连接数
mysql -uroot -pxxxx --default-charater-set=utf8 x < x.sql
记录进程日志: pstack pid > xxx.pid.log
show processlist; 查看mysql连接者
ll -h :::
修改表名称:rename table xx to xxx;
tcpdump port 3306
nagios配置
在xinetd下的不用重启nagios服务;
/etc/xinetd.d/nrpe ---> /usr/local/nagios/etc/nrpe.cfg (IP)
service xinetd restart ----> /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d (启动nrpe)
- adduser smm
- passwd smm
- vim /etc/ssh/sshd_config
- AllowUsers smm
find /root/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
find /root/log/ -mtime +30 -name "*.log" -ok rm -rf {} \; (ok会给出后面指令的提示)
find /root/log/ -mtime +30 -name "*.log" |xargs rm -rf
find /var/log -type f -mtime +1 -exec > {} \;
/你要保持文件存在,但是要清除内容?
atime(access time) 最近访问时间: 在读取文件或者执行文件时更改
mtime(modified time) 最近更改时间: 在写入文件时随文件内容的更改而更改的。
ctime(create time) 最近改动时间: 在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改。
find /home/quants/hll/ -name '*.154062'|awk -F '.154062' '{print $1}'|xargs -I'{}' ln -sf {}.154062 {}//-I:替换
替换文本内容
vim里编辑(:%s/vivian/sky/g)---将Vivian替换为sky
/替换前面要加\\\\(:%s/\\\\/tmp/\\\\/home/g) ---将/tmp 替换为 /home
sed -i 's/test/testing/g'
sed -i 's/test/testing/g' grep -rl test ./
linux sed命令详解
查看linux库文件32位还是64位
objdump -a *.a
objdump -a *.so
linux发邮件
echo ttttt|mail [email protected]
软连接
ln -sf /home/quants/release/m_tactic.12345 m_tactic
硬链接
ln xxx.123 xxx
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/05/2199534.html
crontab定时任务
增加定时任务:
- crontab -e
- vim /etc/crontab
- cat /var/log/cron
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
查文件位置
- find / -name "*.log"
- locate m_tactic
http://blog.sina.com.cn/s/blog_802b04010101bsr3.html - whereis lua
查看连接服务器的历史ip
- who/last
linux添加用户,增加权限
http://www.cnblogs.com/daizhuacai/archive/2013/01/17/2865132.html
- adduser
- passwd
- 赋予root权限,添加sudo权限
- vim /etc/sudoers
- 添加 tommy ALL=(ALL) NOPASSWD:ALL
- ssh远程登录
- vi /etc/ssh/sshd_config (service sshd restart)
- 添加AllowUsers root nagios dataimport tomcat
- 添加AllowUsers [email protected] nagios
- vi /etc/ssh/sshd_config (service sshd restart)
更改拥有者,用户组
- chown -R nagios nagios
- chgrp -R nagios nagios
- chown nagios:nagios tactic.sh
更改用户打开最大的文件数和进程数
- vim /etc/security/limits.conf (重新登录即生效)
- 增加 * soft nofile 65535 (soft警告的设定)
- 增加 * hard nofile 65535 (hard严格的设定)
- 或者根据用户来设置:@quants hard nproc 102400 //进程
- 或者根据用户来设置:@quants soft nproc 102400
- 或者根据用户来设置:@quants soft nofile 102400 //文件
- 或者根据用户来设置:@quants hard nofile 102400
- 查看ulimit -n
- lsof |wc -l 查看服务器打开的文件数
- lsof -u quants|wc -l 某个用户的打开文件数
linux查看cpu数量以及核数
- cat /proc/cpuinfo |grep 'processor'|wc -l
netstat
a:显示所有socket,包括正在监听的。
l:正在监听的
p:显示建立相关连接的程序名
n:拒绝显示别名,能显示数字的全部显示数字
- netstat -lnp/-lpn/-nlp |grep 80
- netstat -ntulp |grep 3306
- nc -lp 3306 & (打开3306端口,即telnet)
- netstat -an | grep 3306
iptables -F
scp
http://jingyan.baidu.com/article/7908e85c77055eaf481ad223.html
- 本地A拷贝远程B上的文件
- scp -P 2222 [email protected] : [B上的文件路径] [A存放路径]
- scp -r [email protected] : [B的文件夹路径] [A存放路径]
- 从本地A拷贝到远程B
- scp /home/1.sql [email protected] : /home
- scp -r /home/test [email protected] : /home/test
show variables like 'char%';
mysql
http://rainbow702.iteye.com/blog/1558251
检测系统是否安装MySQL
- rpm -qa | grep -i mysql
- 若安装则要删除
- rpm -ev MySQL-server-5.0.22-0.i386
- rpm -ev MySQL-client-5.0.22-0.i386
- 若删除不成功则要删除其依赖包
- rpm -ev dovecot-1.0.7-7.el5.x86_64
安装MySQL
linux mysql 更改用户权限
- grant all privileges on
*.*
to [email protected].*.*
identified by 'ifindhexin'; - flush privileges;
mysql 创建用户
- CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- flush privileges;
mysql 主从
http://www.osyunwei.com/archives/7269.html
- 防火墙
- vim /etc/sysconfig/iptables
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
- /etc/init.d/iptables restart #最后重启防火墙使配置生效
- 主服务器
- CREATE USER 'tyyt'@'localhost' IDENTIFIED BY '123456'; //创建用户
- grant replication slave on
*.*
to 'osyunweidbbak'@'192.168.215.52' identified by '123456' with grant option; //授权用户tyyt只能从192.168.215.52这个IP访问主服务器上面的数据库,并且只具有数据库备份的权限
- 手动备份数据库
- mysqldump -uroot -p123456 --default-character-set=utf8 -d quants_db > quants_db.sql; //导出
- mysql -uroot -p123456 quants_db < quants_db.sql; //导入
- mysqldump -t -uroot -p10jqka quants_db TACTIC_DEFINE --where="TACTIC_ID='a4a0f4b3-16e9-40ab-9b55-38830073901c' or TACTIC_ID='4ba9f6a5-7794-4f11-b393-6c35569536d9'" > 20160418.sql //只导出部分数据
1.导出结构不导出数据
mysqldump -d 数据库名 -uroot -p > xxx.sql
2.导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql
4.导出特定表的结构和数据
mysqldump -uroot -p -B 数据库名 --tables 表名 > xxx.sql
5.导出特定表的数据,不到出结构
mysqldump -uroot -p -t 数据库名 --tables 表名 > xxx.sql
6.导出特定表的结构,不到出数据
mysqldump -uroot -p -d 数据库名 --tables 表名 > xxx.sql
http://www.cnblogs.com/qq78292959/p/3637135.html
5.导出表的部分数据
mysqldump -t -uroot -p10jqka quants_db TACTIC_DEFINE --where="TACTIC_ID='5ff3adb3-97bb-4e25-a548-c76e1549a01e'" > lz.sql
- 在命令行输入密码不提示warning
-vim /etc/my.cnf
-[mysqldump] - user=root
- password=xxxx
主从跳过一个错误事件
mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
mysql>slave start
配置主服务器
- vim /etc/my.cnf
- server-id=1
- log-bin=mysql-bin
- binlog-ignore-db=mysql #不同步mysql系统数据库
- service mysql restart #重启MySQL
- show variables like 'server_id'; #查看server-id的值是否为1
- show master status; #查看主服务器
配置从服务器
- vim /etc/my.cnf #编辑配置文件
- server-id=2
- log-bin=mysql-bin
- replicate-ignore-db=mysql #不同步mysql系统数据库
- read_only #设置数据库只读
- service mysql restart #重启MySQL
- show variables like 'server_id'; #查看server-id的值
- stop slave;
- change master to master_host='192.168.215.53',master_user='tyyt',master_password='123456',master_log_file='mysql-bin.000011' ,master_log_pos=107; #执行同步语句
- start slave;
- SHOW SLAVE STATUS\\\\G; #查看slave同步信息
Slave_IO_Running: No
Slave_SQL_Running: Yes
http://blog.csdn.net/edwzhang/article/details/17226975
master: flush logs;
show master status;
then
to slave: stop slave;
change master to .....;
start slave;
mysql主从:relay-bin关联文件:xxx.index
参考mysql用户权限
- 查看MYSQL数据库中所有用户
- SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
- 查看数据库中具体某个用户的权限
- show grants for 'cactiuser'@'%';
- select * from mysql.user where user='cactiuser' \\\\G;
更改mysql用户密码
- set password for 'root'@'localhost'=password('新密码');
Mysql 5.6初次安装完的默认密码存放于
/root/.mysql_secret
service mysql start
SET PASSWORD = PASSWORD('XXXXXX');
将root
对应的密码全部修改为新密码
use mysql
update user set Password = password('XXXXXX') where User='root';
授权root
用户远程登录权限
grant all privileges on *.* to root@’%’ identified by ‘XXXXXX’;
出现error:1032
- vim /etc/my.cnf
- slave-skip-errors = 1032,1062
忘记root密码
- vim /etc/my.cnf
- skip-grant-tables
- 重启mysql
- /usr/bin/mysql
新装的mysql初始密码在:cat /root/.mysql_secret
mysql日志:/var/lib/mysql/
MySQLbinlog mail-bin.000001 | tail
mysqlbinlog localhost-bin.000202 > new_file_name.log
mysqlbinlog --no-defaults --start-date='2016-03-28 00:00:00' --stop-date='2016-03-28 00:00:00' mysql-bin.000021 > 2.txt
////--no-defaults :解决:mysqlbinlog: unknown variable 'default-character-set=utf8'
- 需要找到同步的点。
http://www.cnblogs.com/niniwzw/archive/2010/02/04/1663685.html
mysql>stop slave;
mysql>change master to Master_Log_File=’mysql-bin.005121’,Master_Log_Pos=4;
mysql>start slave;
mysql>show slave status\\G;
数据慢查询,查询慢
set global log_slow_queries=ON;
set global long_query_time=5;
vim my.cnf
log_slow_queries = /var/lib/mysql/hxquant-slow.log
long_query_time = 5
set global log_output='FILE';表示将日志存入文件,默认值是'FILE'。set global log_output='TABLE';日志信息就会被写入到mysql.slow_log表中。
show variables like 'log_queries_not_using_indexes'; //这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。
show processlist/mysqladmin -uroot -ppasswd processlist
- (logstash) nohup ./bin/logstash -f ./etc/logstash_agent.conf >nohup.out &
- nohup /usr/local/elasticsearch/bin/elasticsearch > logs/elasticsearch.log 2>&1 &
- nohup /usr/local/kibana/bin/kibana > logs/kibana.log 2>&1 &
新装一台服务器
虚拟机:配置:显示vnc---keymap---en-us
1.yum源
2.用户sudo权限???
3.jdk(sunjdk)
4.机房开权限
5.服务器防火墙???
6.开通服务与端口对应关系:vim /etc/services
logstash:question:
1.vim logstash.conf
:set fileencoding=utf-8 (修改配置文件编码格式)
2.插件更换:elasticsearch 换成 elasticsearch_http
- reboot/shutdown -h/halt/init 0/init 6重启/
mount -o loop ....(挂载之后以前目录的东西不能用)
- 1、mount -t iso9660 -o loop xx.iso /media 自动挂载
- 2、类似的写入/etc/fstab中
- 2、用(df -TH)查看iso文件系统类型(是不是iso9660还是udf...)
- 2、xx.iso /media iso9660 defaults,ro,loop 0 0 然后再mount -a 挂载
- http://www.cnblogs.com/52linux/archive/2012/03/07/2384400.html
- fdisk -l 查看磁盘分区信息
ls -l more -5 //分页显示
grep "main" test.c //在一个具体文件中查找
file 1.sh //查看文件类型
uname -m / -a // 查看系统
ldd file //查看依赖库
mysql -h ip -P 端口-u root -p passwd //mysql连接远程服务器mysql
初始安装mysql密码:cat /root/.mysql_secret
配置ssh:/etc/ssh/sshd_config
service sshd restart
du -h --max-depth=1
!du
locale //编码格式
date // 时间
grep -R -n '172.20' ./lua/* ./con/*
tar zcvf /home/xx.tar.gz xx //打包,压缩
tar -zxvf xx.tar.gz -C aa / tar -zxvf xx.tar.gz //解压
mysqldump -uroot -p10jqka quants_db > quants_db.sql
mysql -uroot -p10jqka quants_db < quants_db.sql
- 本地A拷贝远程B上的文件
- scp [email protected] : [B上的文件路径] [A存放路径]
- scp -r [email protected] : [B的文件夹路径] [A存放路径]
- 从本地A拷贝到远程B
- scp /home/1.sql [email protected] : /home
- scp -r /home/test [email protected] : /home/test
- /etc/init.d/crond restart //重启crontab
nagios
- 被监控机:/usr/local/nagios/etc/nrpe.cfg
- windows:c:\\\\NSClient++-0.2.7下的NSC.ini文件中的allowed_hosts 后面 需要添加 52服务器的ip 192.168.215.52
- 监控机:/usr/local/nagios/etc/objects/services.cfg....contacts.cfg....timeperiods.cfg
- 查看nagios配置正确与否
/usr/local/nagios/bin/nagios/ -v /usr/local/nagios/etc/nagios.cfg - 被监控机:killall [nrpe.pid]
/usr/local/nagios/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d - 监控机:/usr/local/nagios/libexec/check_nrpe -H 被监控机.ip -c 命令
pstack 进程号(pid) > xxx.log//记录下进程日志
crontab脚本中加入 source /etc/profile 这样加入环境变量crontab就能执行了
redis增加密码无需重启
CONFIG set requirepass xxx
AUTH xxx
CONFIG rewrite
- 以配置文件方式启动:./src/redis-server xxx.conf
echo "keys *" | redis-cli -n 5 --raw >> w.log
1.编译:make ; 然后安装:make PREFIX=/usr/local/redis install #安装到指定目录中
2.如果make失败,就yum install gcc
3.做成服务:cp redis/utils/redis_init_script /etc/rc.d/init.d/redis_6379
cp redis/utils/redis_init_script /etc/rc.d/init.d/redis_6380
4.vim /etc/rc.d/init.d/redis_6379
添加:#chkconfig: 2345 80 90
修改路径:EXEC、CLIEXEC
后台运行:EXECCONF &
cp /var/lib/redis/6379/ /var/lib/redis/6380 -rf
配置文件:cp redis/redis.conf /etc/redis/6379.conf
cp /etc/redis/6379.conf /etc/redis/6380.conf
vim /etc/redis/6379.conf
/usr/local/bin/redis-server /etc/redis/6379.conf &
grep -R -n '172.20' ./lua/* ./conf/*
./redis-cli -h 192.168.210.91 -p 6379
select 32
get :300033:10:0 //最新价
keys *
- 开通服务与端口的对应关系:vim /etc/services
调整系统时钟,时间
30 17 * * * root /usr/sbin/ntpdate 192.168.210.89;/usr/sbin/hwclock -w
动态库例等调用到的时候才去加载配置文件(要看什么时候加载配置文件)
yum源配置本地源
- mount -o loop .....iso /media
- cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.ori
- vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-6.6 - Base
baseurl=file:///media/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
网络配置,桥接
service network restart
cd /etc/sysconfig/network-scripts/
宿主机:
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.205.162
NETMASK=255.255.0.0
GATEWAY=192.168.0.1
虚拟机:
DEVICE=eth0
TYPE=Ethernet
UUID=ac59012c-a11c-40e3-8ec4-4d3fa7b3905a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.215.71
PREFIX=16
NETMASK=255.255.0.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=52:54:00:15:94:2c