liunx常用命令
liunx常见的发行版本有Ubuntu,CentOS,Debian等
我们使用的比较多的是Ubuntu和CentOS
Ubuntu和CentOS对一般使用者来说,最大的不同是
Ubuntu安装软件命令为apt-get install *
CentOS安装软件命令为yum install *
查看liunx是Ubuntu还是CentOS
lsb_release -a
安装lsb_release
yum -y install redhat-lsb
如下这些命令与发行版本无关
liunx创建用户
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
-c:加上备注文字,备注文字保存在passwd的备注栏中
-d:指定用户登入时的主目录,替换系统默认值/home/
-D:变更预设值
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1
-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users
-G:指定用户所属的附加群组
-m:自动建立用户的登入目录
-M:不要自动建立用户的登入目录
-n:取消建立以用户名称为名的群组
-p:账户密码
-r:建立系统账
-s:指定用户登入后所使用的shell。默认值为/bin/bash
-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认保留给系统用户账号使用,所以该值必须大于499
ps:useradd xxxx
passwd xxxx
liunx命令中一定要深刻记忆的一条命令
sudo rm -rf /* //删除根目录下所有内容
查看liunx基本信息
cat /proc/version //查看linux版本
uname -a //查看内核版本
ulimit -n //单个进程所能打开的最大文件描述符数
hostnamectl status //查看主机名
hostnamectl status [--static|--transient|--pretty] //只查看静态、瞬态或灵活主机名,分别使用“--static”,“--transient”或“--pretty”选项
sudo hostnamectl set-hostname
sudo hostnamectl [--static|--transient|--pretty] set-hostname
创建文件夹
mkdir dir //创建目录dir(文件夹)
mkdir -p /../../dir //创建目录树dir(文件夹dir及所有的父文件)
创建文件
vi file //创建文件file(文件名包括扩展名),命令(esc+:+wq)退出
删除
rm -rf dir //删除目录dir及其内容(文件夹dir及其内容)
rm -f file //删除文件file,-f可省略
重命名或移动
mv dir1 dir2 //将文件(或目录)dir1移动并重命名为dir2
复制
cp -rf dir1 fir2 //复制文件(或目录)dir1到dir2
统计文件行数、字节数、字数
wc -c 统计字节数 -l 统计行数 -w 统计字数 file
查看文件夹下文件的个数
ls -l | grep "^-" | wc -l
查看文件夹下文件的个数,包括子文件夹中的
ls -lR | grep "^-" | wc -l
查看文件夹下文件夹的个数,包括子文件夹中的
ls -lR | grep "^d" | wc -l
杀死指定命令进程
kill `ps ax | grep "xxxxxxx" | grep -v grep | awk '{ print $1; }'`
其他
cd dir //进入目录dir
cd .. //返回上级目录(cd ../.. 即为返回上两级目录)
cd - //返回上次所在的目录
cd -- //返回/root(同 cd ~)
pwd //显示当前路径
ls //查看目录中的文件(不显示隐藏文件)
ls -a //显示包括隐藏文件在内的所有文件
ls -l //显示目录中文件的详细信息
ls -t //按照修改时间排列显示目录中的文件(建议配合l使用,ls -lt查看文件具体修改时间)
cat file //查看文件file内容
cat file|head //查看文件file前10行内容(或head 10 file)
cat file|tail -n 10 //查看文件file最后10行内容(或tail 10 file)
tac file //反向查看文件内容(即从最后一行反向查看)(正好写法与表述都与cat相反)
tail -f file //实时查看被添加到文件的内容
Ctrl + s //停止
Ctrl + q //继续
echo str >> file //在文件file末尾(最后一行下)添加str (文件file不存在时就创建file)
echo str > file //用str覆盖file中的所有内容 (文件file不存在时就创建file)
find dir -name "file" //查找在目录dir下所有文件名为file的文件,支持模糊查找(即*.pdf,*.txt等)
grep //查找
grep str file //在file中查找str
grep -r str dir //在目录dir下的所有文件及子文件中查找str
grep -c str file //统计str在file中出现的行数
grep -5 'parttern' inputfile //打印匹配行的前后5行写入inputfile
grep -C 5 'parttern' inputfile //打印匹配行的前后5行写入inputfile
grep -A 5 'parttern' inputfile //打印匹配行的后5行写入inputfile
grep -B 5 'parttern' inputfile //打印匹配行的前5行写入inputfile
grep -Ff file1 file2 //打印file2中和file1中相同的行
grep -v str //排除str
sed 替换或插入
sed 's/原字符串/替换字符串/' file //用替换字符串替换file中的原字符串
sed 's/^/添加的头部&/g' //在所有行首添加
sed 's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed '$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换第2到第5行
sed '2,$s/原字符串/替换字符串/g' //替换第2到最后一行
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more //查看文件句柄个数
查看线程:
cat /proc/${pid}/status //可以查看大致的情况
top -H -p pid //查看进程的所有线程(ps -T -p pid)
sysctl //查看系统参数
-w //临时改变某个指定参数的值,如sysctl -w net.ipv4.ip_forward=1
-a //显示所有的系统参数
-p //从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
查看JVM设置参数
jcmd pid VM.flags
查看gc状态
jstat -gc pid 1000
查看内存队列
jmap -histo pid | head -n 20
jmap -dump:format=b,file=/log/heapdump1.out pid
xargs与-exec功能类似
find mnt/*/root/*.properties -type f |xargs grep -i "Mary" //在所有文件中检索字符串Mary
shell 快捷键
Ctrl + a -- 跳到行首
Ctrl + e -- 跳到行尾
awk:
cat /proc/partitions | grep "[hsrm].*[^0-9]$" | sort -k 1 -k 2 -k 4| head -n 2| tail -n 1|awk '{print $NF}' //获取硬盘盘符
cat test.txt |awk '{$1=""; $3=""; $4=""; print }' //第几列不要,其他列都要
cat top.txt | awk '{if(NR % 3 == 0){print $0}}' //只显示3的倍数行,其他行不显示
awk '{if(NR % 3 != 0){print $0}}' //删除3的倍数行
最后一列 $NF ,分离 -F ',' '(print $1)'
cat file | sed -e "/rsyslogd was HUPed/d" //文件file中,包含"rsyslogd was HUPed"的行都显示
cat filename |sort |uniq //文件去重
统计文件行数、字数、字节数
wc
-l 统计行数
-w 统计字数
-c 统计字节数
TCP/IP
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' //查看TCP状态
tcpdump -i eth0 host 172.16.15.38 and port 8055 -w out.cap //查看网卡eth0的tcp报文,并重定向到文件中
上传/下载
本地与远程服务器间
ftp 101.37.86.115 //连接指定host,要求输入用户名密码
sftp -P 40003 admin@120.55.21.42 //连接指定host的40003端口,以admin连接,要输入密码
get //下载
put //上传
服务器间
scp *.tmp 101.37.86.115:/root/deploy/kft/req //将当前目录下tmp后缀的文件上传到指定目录
scp root@10.20.2.232:/mnt/cosmetic-rest/*.* ./ //将指定目录的文件下载到当前路径
压缩/解压缩
tar -cvf jpg.tar *.jpg //压缩
tar -cvf jpg.tar 1.jpg 2.jpg 3.jpg //压缩
tar -xvf aaa.tar //解压
卸载
rpm -q -a //查看安装的软件包
rpm -e [package name] //卸载软件包
rpm -e [package name] --nodeps //忽略依赖
rpm -ql [package name] //查看安装位置
批量删除同名进程
kill -9 `ps -ef|grep xxxx|awk '{print $2}'`
ps -ef|grep xxxx|awk '{print $2}'|xargs kill -9