工做了几年,常常会使用到一些Linux命令,时间长了也会忘。简单整理了一下,也能加深记忆。如下均为我的平时使用到的一些基本命令,若有纰漏,欢迎随时指正。java
后面打算把Linux服务器性能监控的一些经常使用命令整理分享,欢迎你们关注。 原文连接mysql
#显示隐藏文件
ls -la
#易读方式显示文件大小
ls -lh
#按最后修改时间显示
ls -lt
#创建软连接
ln -s /folder /folder_via_soft_link
#重命名文件,搜索带2015的文件,重命名为2017
rename 2015 2017 *2015*
#比较两个文件
diff -w file1.txt file2.txt
#一次查看多个文件内容,先file1,再file2
cat file1 file2
#-n 加上行号
cat -n file
#删除文件前先确认,-i,确认
rm -i filename
#拷贝文件1到文件2,保持文件的权限、属组、时间戳
cp -p file1 file2
#删除非空文件夹
rm -rf *2014*
#删除文件后空间不释放,lsof(list open files)
lsof | grep delete
#删除软连接
rm -rf /target
#建立目录
mkdir -p /dir1/dir2/dir3
复制代码
#查询文件夹大小
AIX:du -sg dirname
Linux: du -sh dirname
#按照文件大小,从大到小排序,按照大小排序的话不要加h参数
du -s *|sort -nr|head
复制代码
#压缩test文件夹
tar cvf test.tar test/
#查看tar包内容
tar tvf test.tar
#gzip压缩成gz文件
gzip filename
#解压gz
gzip -d file.gz
#显示压缩ratio
gzip -l file.gz
复制代码
#不区分大小写
find ./ -iname *keywords*
#找到文件,执行命令
find ./ -iname *keywords* -exec md5sum {} ;
#删除建立时间大于30天的文件
find ./ -name *keywords* -type f -ctime +30 -exec rm -fr {} ;
#使用xargs解决文件列表过长
find /dirname/ -name "*201410*" |xargs -n 100 rm {} ;
#查询大文件,单位Kb
find ./ -size +500 -exec ls -lh {} ;
#文本中查找,不区分大小写
grep -i "keywords" filename
#在文件夹中递归查找匹配关键字的
grep -r "keywords" *
#grep中实现or操做:寻找mysql与java进程,打印出pid与最后一列
ps -ef|grep 'mysql\|java'|awk '{print $2, $NF}'
复制代码
#sed = stream editor
#-n 只打印匹配的行
sed -n '2p' filename #第2行
sed -n "1000,1200p" filename #1000~1200行
#打印匹配字段的行
sed -n '/kw1/p' filename
#截取两个字符串之间的内容
sed -n '/kw1/,/kw2/p' filename
#example:编辑bin文件,将字段替换生成新文件
cat XX_1030.bin | sed -e 's/20141030/20141031/g' > xx_1031.bin
复制代码
#格式化输出
awk '{print $1,$4}' test.txt #显示文件一、4列
#与ps命令结合
ps -ef|grep java|awk '{print $1,$2}'
#打印出最后一列,使用用$NF
ps -ef|grep 'mysql\|java'|awk '{print $2, $NF}'
#kill掉java进程
kill -9 `ps -ef|grep java |awk '{print $2}'`
#正则匹配:输出第二列包含you的行,并打印第一列,第二列;~模式开始,//内是模式
awk '$2 ~ /you/ {print $1,$2}' test.txt
#计算文件大小
ls -l *.txt |awk '{sum+=$5} END {print sum}'
df -m|awk '{sum+=$2} END {print sum}'
#参数-F 按照后面字段进行分割
cat /etc/passwd |awk -F ':' '{print $1}'
cat /etc/passwd |awk -F ':' '{print $1" "$6}'
复制代码
vim 编辑器命令实在太丰富,这里简单列举几个linux
#打开文件跳到第一个匹配的行
vim +/search_pattern filename
#只读模式打开
vim -R filename
#替换全部匹配文本,命令模式
%s/old/new/g
复制代码
#查看全部的网络接口和状态
ifconfig -a
#使用up、down启动或者中止某个接口
ifconfig eth1 down
#查看网络配置
ifconfig |egrep "HWaddr|inet addr"
#查看路由表
route
#向DNS服务器查询域名,默认为UDP,可经过输入set vc改成TCP形式(性能影响较大)
nslookup
#ping,发送5个数据包
ping -c 5 ip
#查询端口状态
netstat -an|grep 3306
#域名解析
配置文件:/etc/resolv.conf
加入dns服务器
nameserver 192.168.2.206
#查看带宽,root用户
ethtool eth1
Settings for eth1:
Speed: 10000Mb/s
#每1s刷新监控eth1网卡上的流量状况
watch -n 1 "ifconfig eth1|grep bytes"
#tcpdump抓包,文件可用wireshark分析
#-i 网卡;-s size
#解决:Package size limited during capture,加参数 -s0 能够抓取任意长度的数据包
tcpdump host 192.168.2.206 -s0 -w /tmp/net.pcap #抓取全部与hostip之间的网络包,保存为文件
#下载文件到本地
wget --ftp-user=administrator --ftp-password=000000 ftp://192.168.2.206/source/app.out
复制代码
#Linxu查看版本、系统信息
uname -a
cat /proc/version
lsb_release -a
#suse版本查询
more /etc/SuSE-release
#AIX查询配置
prtconf
#cpu查询
cat /proc/cpuinfo
#查看虚拟CPU分配(AIX)
lparstat -i
#内存,用MB显示结果
free -m
cat /proc/meminfo
复制代码
#更改密码
passwd
#root更换其余用户密码,或者建立新用户
passwd username
#Linux解锁用户,AIX使用smitty便可
faillog -u username -r
#Linux新建用户
groupadd -g gid groupname #创建用户组,gid,组名
useradd -d /homedir -g gid -u uid -p #创建用户 home 组 uid 输入密码
#ssh登录
ssh -l username hostname
#用指定用户执行命令,执行完返回原帐户
su - user -c 'ls'
#查询历史命令
history n
#查看当前的环境变量
export
#查看和java有关的环境变量,-i通常都是ignore忽略大小写的意思
export |grep -i JAVA
#查看特定用户的进程
top -u mysql
#修改权限,—R递归修改子目录
chown -R mysql /mysql
chgrp -R mysql /mysql
or:chown -R mysql:mysql *
#用户profile相关
设置当前用户的 .profiles 文件, 进而后 cat ~/.profile 入到 etc 目录,
其实就是进入当前目录的home目录,而后ls -a 就有.profile 文件
#修改用户home
Step1:修改对应的/etc/passwd
Step2:usermod -d /userhome username
复制代码
#关闭系统当即关机
shutdown -h now
#10分钟后关机
shutdown -h +10
#重启
shutdown -r now
#重启期间强制进行系统检查
shutdown -Fr now
复制代码
#安装
rpm -ivh xxx.rpm
#更新
rpm -uvh xxx.rpm
#卸载
rmp -ev httpd
#编译安装
./configure #检查依赖,配置编译项
make #编译
make install #安装
复制代码
#查看服务状态
service ssh status
#查看全部服务状态,root权限
service --status-all
#启动telnet服务
service xinetd restart
#启动ftp服务
service vsftpd start
#nfs启动(linux)
rcnfsserver status
rcnfsserver start
service nfs start
#linux设置共享目录
编辑/etc/exports
showmount -e 192.168.2.206 #检查server共享目录
复制代码
最重要的一个命令,要学会看官方手册git
#whatis
whatis shutdown
shutdown (3p) - shut down socket send and receive operations
shutdown (8) - bring the system down
shutdown (2) - shut down part of a full-duplex connection
#指定特定版本的manual
man 3p shutdown
#查看某个命令的位置
whereis ls
#查看某个命令的描述
whatis ls
复制代码
#修改 /etc/profile,全局生效
#修改用户$HOME/.profile 对当前用户生效
JAVA_BIN=/usr/jdk/jdk1.6.0_16/bin
export JAVA_BIN
JAVA_HOME=/usr/jdk/jdk1.6.0_16
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
. /etc/profile 生效
复制代码
#查看指定用户的crontab
crontab -u root -l
Linux:5,10,15,20,25,30,35,40,45,50,55,0 * * * * /usr/sbin/sntp -P no -r 192.168.2.206
AIX:0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/sbin/ntpdate 192.168.2.206
复制代码