一、查看系统指标的一些命令
uname -r ,查看系统内核版本(内核是哪一个版本的,如)
cat /etc/issue :查看操作系统版本信息(是centos或者redhat的哪一个版本,如);
ps -ef 查看服务器当前进程,仅查看进程是否存活
ps aux 查看服务器进程,显示每一个进程占用的cpu、内存、状态(stat)、开始时间等信息
kill -9 UID 杀掉进程
top 查看服务器进程及各个进程消耗资源情况
more /etc/services 查看系统的默认端口号
pwd 查看当前路径
uptime 查看系统负载,5,10,15分钟内等待CPU处理的进程数量
iostat 2 3 每隔2秒刷新显示cpu、磁盘io状态,一共显示3次
vmstat 2 3 查看服务器的CPU、内存、虚拟内存、io使用情况
init [level] 切换运行级别,例:init N 切换为N级别 PS:2、3、4、5为用户模式,可以用runlevel查看当前系统运行级别;
setup 设置公用程序
history 显示历史执行过的命令,一般和|grep一起使用,此时!N即执行第N条历史命令;
gentenforce:显示seselinux的状态, vim /etc/selinux/config SELINUX=enforcing <==调整 enforcing|disabled|permissive
which [命令]: 查看此命令是否存在,在哪个位置;
date 查看日期,例:date -d "yeterday" +%Y-%m-%d ,查看昨天是几号,以“%Y-%m-%d”格式显示出来;
cal:显示日历
echo $? 检查上一条命令是否执行成功(0为成功,1为失败)
echo $PATH 输出PATH变量值;PATH可以换成其他所有的变量名
source [文件名] 让系统重新加载此文件; 或者使用 . [文件名] 命令;
>覆盖重定向,文件内容会被覆盖,>>追加重定向,追加到文件的最后一行,|命令连接符
w 查看系统登录用户情况
last 查看系统最近登录的用户
useradd [用户名] 创建用户,/etc/passwd文件保存所有的用户信息,此文件只有root有权限修改;
passwd [用户名] 设置用户密码(设置root密码,只需执行passwd命令即可重新设置密码)
groupadd [用户组名] 创建用户组;
groupadd –r [用户组名] 创建系统用户组;不加r则创建普通用户组;useradd也一样
useradd [用户名] -g [用户组] -s /bin/nologin :创建用户并指定组,且设置此用户不可登录(不加-s则默认可登录);
id [用户名] 查看用户信息及是否存在
userdel -r [用户名] 删除用户且删除其家目录
二、查看网络的一些命令
/etc/sysconfig/network-scripts/ 网卡文件所在位置
curl [web域名] web测试工具,用法示例:curl http://192.168.3.3 或者 curl -sI http:192.168.3.3-->返回请求网页的请求头
ping [主机名或IP] 确定网络和各外部主机的状态,测试、评估和管理网络,命令每秒发送一个数据报并且为每个接收到的响应打印一行输出;
iftop 查看各进程的流量使用情况
telnet ip 或域名 PORT 查看远程主机指定端口是否处于监听,例:telnet www.baidu.com 80查看www.baidu.com的80端口是否处于监听;
ifconfig eth0 down 关闭网卡;
ifconfig eth0 up 启动网卡;
route -n 显示系统当前路由(网关、子网掩码等)信息
vim /etc/resolv.conf 在其中可以以“nameserver IP”格式指定本机可使用的dns服务器,这个也是dns的配置文件;
/etc/hosts 系统默认dns解析文件,可以新增“ip 域名”来实现本机访问该域名时首先解析到该IP
/etc/hosts.allow 加入此文件的IP可以远程连接本机;
/etc/hosts.deny 加入此文件的IP不可以远程连接本机;
dig [域名] 查看某域名的解析过程;例:dig www.baidu.com-- –>查询百度的域名解析过程;
mtr -r IP 判断向某IP的丢包情况
traceroute -q 3 www.baidu.com 探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;
tcpdump 抓包命令,可监视指定指定网络(-i eth1,即eth1网卡)指定主机(host 192.168.1.102,即主机)、指定端口和指定网络或者指定协议的数据;
例:tupdump host 192.168.3.3 and \ (210.27.48.2 or 210.27.48.3\),截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump -i eth0 src host hostnam 截获主机hostname发送的所有数据
tcpdump -i eth0 dst host hostname 截获主机hostname接收的所有数据
备注:在win下的wireshark命令,用于抓取数据包
三、磁盘管理的一些命令
df -h 查看分区挂载情况及使用的情况
df -i 查看分区inode节点使用情况,若节点使用完,则即使磁盘仍有空间但无法写入文件or目录;
lsblk 查看光盘(sr0)和磁盘(sda、sdb、、)的分区挂载情况,会显示所有的新磁盘及分区情况
blkid 查看磁盘分区的格式化情况(即查看每个分区的UUID和文件系统ext4或者swap)
fdisk [磁盘名] 给某磁盘进行分区,p查看已有分区,n新增分区(加G方式,一般不用加扇区),w保存退出
mkfs.ext4 dev/sdb1:格式化sdb1分区(完成后,一般再blkid查看一下分区的格式化情况)
vim /etc/fstab 在此文件中添加磁盘分区,则为永久挂载为启动时自动加载的文件(之后再需要mount -a 进行刷新,然后再df -h查看分区挂载情况)
PS:swap一般为内存大小的两倍;
四、文件管理的一些命令
ls 查看目录下的文件
ll 查看目录下文件的基本信息
mv File1 /PATH/File2 把文件File1改名为File2,并移动到/PATH下
mv File1 /PATH/ 把文件File1移动到/PATH下
mv /TEST/ /PATH/ :把文件夹/TEST/移动到文件夹/PATH/下
cp File1 /PATH/File2 把文件file拷贝到file2中,若没有file2则新建file2;会询问是否覆盖,y,则直接覆盖,n,则不执行此次移动操作;
cp File1 /PATH/ 把文件File1拷贝到目录下;
cp File1 File2 /PATH/ 把多个文件拷贝到/PATH/下;此时必须拷贝到目录下;
cp /PATH/ -r /PATH/TEST:把/PATH/及以下所有目录,递归复制到/PATH/TEST下,若TEST不存在,则新建TEST;若为文件则报错;注意这里要加-r
rmdir -p 递归删除空目录;若目录非空则报错
rm -r /TEST 递归删除TEST目录下的各目录及文件,会询问是否删除,y则删除,n则不删除;
mkdir -p aa/bb/cc :创建各级目录(不报不存在,直接创建);
mkdir test :创建目录;
touch File:创建文件;
chmod +rwx test 给所有用户加"读\写\执行"权限
chmod a+x test 给all
chmod o+x test 给others
chmod u+x test 或者 chmod g+x test 给属主或者属组
chmod -R 777 /PATH/ 给目录递归加全部权限;
chattr +i test 给文件or文件夹赋予不可编辑的权限(不可vim或者touch新文件)
lsattr -d aa 查看aa目录有无i权限
chown newuser:newgrowp file 改变文件的用户和属组
chown –R newuser:newgrowp /PATH/ 改变目录的用户和属组
du -sh [文件或者目录] 查看文件或目录的大小;不指定则查看当前目录的大小;
du –sh --max-depth=1 查看该目录下所有直属文件夹的大小
tree [目录] 查看目录结构,不跟对象则查看当前目录树
gzip test.txt > /PATH/test.txt.gz 将文件test.txt压缩/PATH目录下的test.txt.gz,原文件则不再存在;若要保留源文件,则 gzip -c test.txt > /PATH/test.txt.gz
gunzip test.txt.gz > /PATH/test.txt 将文件test.txt.gz解压为test.txt,原文件不再存在;若要保留原文件,则 gunzip -c test.txt.gz > /PATH/test.txt
zip /PATH/bb.zip bb 压缩bb为/PATH/bb.zip
unzip bb.zip 或者 unzip bb.zip -d /PATH 解压到当前目录下或者指定目录下
tar -zcvf /tmp/etc.zip /etc 将/etc下的文件全部打包为/tmp/etc.zip(格式为zip)
PS:不加-v则不显示压缩的文件,加v则显示压缩的文件;另外,若被压缩的文件使用绝对路径,则解压后,路径也都解压到当前目录下,文件在当前目录下的当前路径下;在当前路径下,压缩绝对路径文件,加-C则只压缩文件;
tar -jcvf /tmp/etc.bz2 /etc 将/etc下的文件全部打包为/tmp/etc.bz2(格式为bz2)
tar -xvf /tmp/etc.tar.gz -C /usr/local/rsc 将/tmp/etc.tar.gz解压到/usr/local/rsc目录下,此时必须加-C,否则报错;(解压到哪个目录,一般就先切换到该目录下,若要解压到/usr/local/src下,则先cd /usr/local/src,再进行解压)
find /root -name File:搜索家目录下的某文件,要知道目录下有没有此文件时用此命令;
ln -s filename linkname 建立软件连,一般是对目录建立,可以跨分区;例如:当前在家目录下,ln -s /root/httpd-2.3 /dirtest/httptest 可以看出在建立软连接时,不论为哪个路径的文件建立在哪个路径下的链接,均指定绝对路径即可,一般的,先进入目录
echo test > bb 把test字符串追加到bb文件中,原文件中的内容全部删除;
echo test >> bb 把test字符串追加到bb文件中,写在最后一行,不删除原文的内容;
cat bb:查看bb文件内容,只查看,不可编辑;
cat > /opt/server/nginx/vhosts/fengkong.conf << EOF ----创建文件fengkong.conf
log_format fengkong.wanglibao.com ----这里开始为文件输入内容
server {
listen 80;
server_name fengkong.wanglibao.com;
}
EOF ----- 为文件fengkong.conf输入内容结束
cut -d: -f n 截取文件中的行并显示,这里以域来划分;例:cat /etc/passwd|head -n 5|cut -d : -f 1 用-d来设置间隔符为冒号,然后用-f来设置我要取的是第一个域,
vim非编辑状态下的各命令
u:按一下恢复到上一次修改状态;q不保存退出,q!不保存强制退出;wq保存退出,wq!保存并强制退出;x!保存并强制退出;/ 搜索内容 ,定位搜索出指定内容;
%s/字符串1/字符串2/g:当前所有“字符串1”替换为“字符串2”;s/字符串1/字符串2/g:当前行所有“字符串1”替换为“字符串2”;
行前加#,注释掉该行;
wc -l bb 统计bb文件中有多少行,例:ls | wc -l 统计ls显示的内容有多少行
head 查看文件的前多少行,例:head -N bb 查看bb文件的前多少行;
tail 查看文件后多少行,例:tail -f -N bb 查看bb文件最后N行且动态显示,例如: tail -f -200 bb.log
more 分页查看文件,按enter键进行切屏,例:ls /etc |more 分屏查看;
sz 将选定的文件传送(send)到本地机器,命令格式:sz filename
rz 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到linux服务器,从弹出的窗口中选择文件,上传文件的用户和组为当前登录的;
五、查看服务的一些通用命令
lsof -i:PORT 查看端口占用情况
netstat -ntlup 查看端口及使用情况(t表示tcp协议的,u表示udp协议,可以自行添加)
./ab -n 3000 -c 30000 http://www.test.com/ (其中-n代表每次并发量,-c代表总共发送的数量)ab命令放在apache目录bin目录下面,测试apache的web服务器的性能测试工具,每秒钟处理的http请求
chkconfig --add httpd 加入httpd到开机自启列表
chkconfig httpd on/off 设置httpd服务开启启动或关闭
chkconfig --list |grep httpd 查看httpd服务是否开机启动 一般的,某种重要服务在搭建完成后均需要设置为开启启动;
vim /etc/rc.local时,在其中可以设置某服务为开机自启;
alias:此命令用来定义命令别名;
crontab -e 编辑新的计划任务(计划任务由crond服务来提供控制,若该服务没启动(其是开机启动,可通过ps -ef |grep crond查看),则计划任务不执行)
crontab -l 列示现在所有计划任务 (/var/spool/cron/root ,root用户创建的计划任务都在这里)
计划任务格式::分 时 日 月 周 命令
2 * * * * ,每2分钟执行一次;
2 02 * * * ,每天凌晨2点2分执行一次命令命令;
2 02 02 * * ,每月2号凌晨2点执行一次命令;
2 02 02 02 *,每年2月的2号的凌晨2点零2分执行一次命令;
2 02 * * 0,每周的凌晨2点零2分执行一次命令;
*/2 02 * * 2,4,6,每周的2、4、6的凌晨2点开始每隔2分钟执行一次命令;
示例1:* * * * 2,4,6 tar -jcvf /logs/messages-$(date +%y%m%d).tar.bz2 /var/log/message 每周的2、4、6备份var下面的文件到logs,命名为“messages-yyyymmdd”;
示例2:*/9 * * * * wget -O -q http://www.baidu.com/common/logo.sh|sh 每隔9分钟下载执行脚本文件logo.sh
示例3:30 01 * * * /bin/bash /usr/local/databack.sh 每天1点半执行数据库备份脚本;
yum whatprovides *bin/rz
yum –y install rz lrzsz-0.12.20-27.1.el6.x86_64
yum -y install [应用名称] yum安装应用;
yum remove [应用名] yum卸载应用;---->应用安装的所有依赖文件(别的应用也依赖的则不卸载)全部卸载;
yum list [服务名] 列示某服务的yum包
PS:配置yum源:安装base源和epel源;另外,在yum makecache 之前一般执行以下yum clean all 操作,因为只要有过yum命令,就会有缓存在,否则容易报错url= 404;
rpm -ivh *.rpm 安装rpm应用包;
rpm -Uvh url.*rpm 升级一个包;
rpm -e proftpd-1.1.2.3 卸载rpm应用 --->仅卸载rpm安装时的文件;
rpm -qa proftpd 查看proftpd是否安装,会列示出安装的版本;装过之后看一下有没有装上;
rpm -ql proftpd 列示proftpd应用的文件及安装位置,这个很有用,看一下具体的文件位置在什么地方;
PS:man [命令],查看命令的帮助文件;源码包:tar.gz,解压后需要变异,然后马make&&make install;rpm包,里面默认了很多默认项,直接rpm进行安装,各目录放在默认目录下;
六、数据库管理的一些命令
(1)基本命令
show databases 查看库
use [库名] 使用或者进入某库
start slaves 启动从
stop slaves 停止从
change master to master_host='10.251.1.105',master_port=3306,master_user='rep',master_password='h47Ny0GR3A',master_log_file='mysql-bin.000137',master_log_pos=38544288 在从上重新定向主;
show slave status\G
show master status
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1 让从库跳出当前事务,去执行下一个event
drop database [库名] 删除库;
create database [库名] 增加库;
alter table table_name rename table_new_name 改表名
show processlist 显示当前运行线程
select host,user from mysql.user 查询表的host,user字段
grant all privileges on oil.* to 'oil'@'220.181.134.224' identified by '123456' 授权用户oil,赋予oil库所有表的所有权限
grant select on oil.* to 'oil'@'%' identified by '123456' 授权用户oil,可在所有IP上登录,赋予oil库所有表的读权限
revoke select,insert,update,delete on 数据库名.* from '用户名'@'IP' identified by "密码" 移除用户的读,改,删除权限;
create user 'test'@'127.10.0.1' identified by '123456' 创建test用户
flush privileges 刷新状态,立即生效
show VARIABLES like '%max_allowed_packet%' 查看某参数值
show global variables like '%timeout' 查看某全局参数
set globle wait_timeout=2880000 设置某全局参数
kill [用户ID号] 踢出某登录用户
show grants 查看所有登录权限
show grants for '用户名'@'ip' 查看某用户的登录权限
update user set password='密码' where user='用户名' 改密码
update user set password='密码' where host='IP' 改登录时的授权登录IP
drop user '用户名'@'IP地址' 删除用户
(2)备份,导入命令
mysqldump --opt testdb20160316 -uroot -pIVYFeu4jS9 |gzip > /data0/testdb.gz 导出库并压缩
mysqldump -uroot -pIVYFeu4jS9 --all-databases > /home/sqlfile.sql 导出全部数据库
mysqldump -uroot -pIVYFeu4jS9 testdb special_offer > /root/special_offer.sql 导出表---->注意(1)这里先写库在写表(2)直接导出为.sql结尾的文件
mysqldump -h127.0.0.1 -uroot -ppassword --add-locks -d dbname > dbname.sql 加-d,只导出表结构(--add-locks,导出过程中锁定表,导出后解锁)
gunzip < /data0/mysql/cong1/testdb2016-05-05.gz | mysql -uroot -pIVYFeu4jS9 testdb 导入库 --->注意(1)这里源文件.gz会继续保存(2)只会覆盖原有的表;
#gunzip /data0/mysql/cong1/testdb2016-05-05.gz
#mysql -uroot -ppassword
>show databases;
>use testdb;
>source /root/testdb2016-05-05; 导入库 ----->注意(1)这里是文件,不是压缩文件;(2)只会覆盖有的表,其他的表则保存,不会覆盖;
>exit
mysql -uroot -p123456 --all-databases < /home/sqlfile.sql
#mysql -uroot -ppassword
>source /home/sqlfile.sql 导入全部数据库
>exit
mysql -uroot -pIVYFeu4jS9 testdb < /root/special_offer.sql 导入表 ---->注意,这里直接导入到某库里即可;
gunzip -c 文件名.sql.gz > 文件名 解压sql.gz文件为指定文件---->注意,加-c则源文件保留,去掉则源文件不保留;
备注:mysqldump 备份后重新导入,不会对备份后的“新增库or表”进行覆盖操作,这跟mysqldump的原理有关,可以看一下导出后的文件;
(3)mysql的恢复还原操作
show global variables like 'log_%' 查看binlog是否开启
show binary logs 查看binlog日志位置号
mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000110 将binlog日志翻译成sql文件