**Linux中许多常用命令是必须掌握的,希望可以帮助你们**
1、基本操作
LINUX关机,重启
#关机
shutdown -h now
#重启
shutdown -r now
添加用户,配置sudo权限
#添加用户
useradd 用户名
passwd 用户名
#添加sudo权限
vim /etc/sudoers
#修改文件里面的
#root ALL=(ALL) ALL
#用户名 ALL=(ALL) ALL
设置固定ip
ifconfig em1 192.168.132.1 netmask 255.255.255.0
查看系统,CPU信息
#查看系统内核信息
uname -a
#查看系统内核版本
cat /proc/version
#查看当前用户环境变量
env
或者
cat /proc/cpinfo
#查看有几个逻辑cpu,包括cpu型号
cat /proc/cpinfo | grep physical | uniq -c
后台运行命令
#后台运行,并且有nohup.out输出
nohup xxx &
#后台运行,不输出任何日志
nohup xxx > /dev/null &
nslookup(用于查询DNS记录…),查看域名路由表
nslookup google.con
last,最近登录信息列表
#最近登录的5个账号
last -n 5
查看进程启动路径
cd /proc/xxx(进程号)
ls -all
#cwd对应的是启动路径
查看进程树找到服务器进程
ps auwxf
2、磁盘,文件,目录相关操作
打开只读文件修改后需要保存时(不用切换用户)
#在normal模式下
:w !sudo tee %
vim操作
vim的几种模式
1、正常模式:可以使用快捷命令,或按:输入命令行
2、插入模式:可以输入文本,在正常模式下按i、a、o等都可以进入插入模式
3、可视模式:正常模式下,移动光标可以选择文本。
4、替换模式:正常模式下,按R进入。
#normal模式下,g表示全局,x表示查找的内容,y表示替换后的内容
:%s/x/y/g
#normal模式下
0 # 光标移到行首(数字0)
$ # 光标移至行尾
shift + g # 跳到文件最后
gg # 跳到文件头
#显示行号
:set nu
#去除行号
:set nonu
查看磁盘,文件目录基本信息
#查看磁盘挂载情况
mount
#查看磁盘分区信息
df
#查看目录及子目录大写
du -H -h
#查看当前目录下各个文件,文件夹占了多少空间,不会递归
du -sh *
wc命令
#查看文件里有多少行
wc -l filename
#查看文件里有多少word
wc -w filename
#文件里最长的一行是多少字
wc -l filename
#统计字节数
wc -c
3、常用压缩,解压缩命令
压缩命令
tar czvf xxx.tar
zip -r xxx.zip
解压缩命令
tar zxvf xxx.tar
#解压到指定文件夹
tar zxvf xxx.tar -C /xxx/yyy/
unzip xxx.zip
cp,scp,mkdir
#复制
cp xxx.log
#复制并强制覆盖同名文件
cp -f xxx.log
#复制文件夹
cp -r xxx(源文件夹) yyy(目标文件夹)
#远程复制
scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx
# 级联创建目录
mkdir -p /xxx/yyy/zzz
# 批量创建文件夹, 会在test,main下都创建java, resources文件夹
mkdir -p src/{test,main}/{java,resources}
比较俩个文件
diff -u 1.txt 2.txt
查看,去除特殊字符
#查看特殊字符
cat -v xxx.sh
#去除特殊字符
sed -i 's/^M//g’ env.sh 去除文件的特殊字符, 比如^M: 需要这样输入: ctrl+v+enter
find检索命令
# 在目录下找后缀是.mysql的文件
find /home/eagleye -name '*.mysql' -print
# 会从 /usr 目录开始往下找,找最近3天之内存取过的文件。
find /usr -atime 3 –print
# 会从 /usr 目录开始往下找,找最近5天之内修改过的文件。
find /usr -ctime 5 –print
# 会从 /doc 目录开始往下找,找jacky 的、文件名开头是 j的文件。
find /doc -user jacky -name 'j*' –print
# 会从 /doc 目录开始往下找,找寻文件名是 ja 开头或者 ma开头的文件。
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print
# 会从 /doc 目录开始往下找,找到凡是文件名结尾为 bak的文件,把它删除掉。-exec 选项是执行的意思,rm 是删除命令,{ } 表示文件名,“\;”是规定的命令结尾。
find /doc -name '*bak' -exec rm {} \;
4、网络相关
查看什么进程使用了该端口
lsof -i:port
iptables
# 查看iptables状态
service iptables status
# 要封停一个ip
iptables -I INPUT -s ***.***.***.*** -j DROP
# 要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP
备注: 参数-I是表示Insert(添加),-D表示Delete(删除)。后面跟的是规则,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放弃连接。
#开启9090端口的访问
/sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT
# 防火墙开启、关闭、重启
/etc/init.d/iptables status
/etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart
nc命令,tcp调试利器
#给某一个endpoint发送TCP请求,就将data的内容发送到对端
nc 192.168.0.11 8000 < data.txt
#nc可以当做服务器,监听某个端口号,把某一次请求的内容存储到received_data里
nc -l 8000 > received_data
#上边只监听一次,如果多次可以加上-k参数
nc -lk 8000
tcpdump
#dump出本机8888端口的tcp包
tcpdump -i em1 tcp port 8888 -s 1500 -w abc.pcap
ss
# 显示本地打开的所有端口
ss -l
# 显示每个进程具体打开的socket
ss -pl
# 显示所有tcp socket
ss -t -a
# 显示所有的UDP Socekt
ss -u -a
# 显示所有已建立的SMTP连接
ss -o state established '( dport = :smtp or sport = :smtp )'
# 显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
找出所有连接X服务器的进程
ss -x src /tmp/.X11-unix/*
列出当前socket统计信息
ss -s
解释:netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
参考链接:
Panda:http://siye1982.github.io/2016/02/25/linux-list/