基本处理和管理命令
ls -a -l -d -R -u #查看文件
cp -r -a -p -f #copy
rm -rf #-r 递归删除目录,-f 忽略提示,直接删除
du -sh #查看文件大小
wc -l #查看文件有多少行
more #查看文本
less #查看文本
head -5 #查看文本前五行
tail -5 -f #查看文本后五行,-f 从最后向上查看文本
pwd #查看当前工作目录
which #查看可执行文件的位置
clear #清屏
tar -zcf xf -C #归档,-zcf gzip压缩并归档,-xf解归档,-C解压目录
zip -r #压缩,-r 压缩目录
unzip -d #解压缩,-d解压目录
crontab -e -l #计划任务,-e修改,-l查看,分时日月周 *****,命令,操作30 21 * * * 每晚21点30分钟执行
ln -s #创建硬链接,-s 创建软链接 ln -s 源文件 软链接名
chmod -R #修改文件权限,-R递归修改,ugo,rwx(4只读,2写入,1执行),u=-w-,+=- chmod -R 777 要修改目录
chown -R #修改文件所属者和所属组,-R递归修改,tp:tp chown -R 用户名:用户组 要修改的目录
alias #添加和查看别名,unalias删除别名,alias Ab="rm -rf"
echo -n -e #输出,-n输出不换行,默认换行。-e #支持反斜线开始的转义字符,屏蔽反斜线后面字符的原本含义
uniq -c -d -u #字符行统计,-c 统计文本中重复的行,-d 只显示重复出现的行,-u 只显示不重复出现的行
sort -n -r #字符行排序,-n 默认使用从小到大排序,-r 数字从大到小排序
watch #重复执行某一命令观察变化,-n时隔多少秒刷新,-d高亮显示动态变化
sleep #等待时间,单位s
xargs #常用于管道后面,字符转换类似于管道
history -c #查看历史命令,-c 清除历史命令记录
getenforce #查看selinux当前状态
setenforce 0/1 #关闭开启selinux
source #刷新文件配置,source /etc/profile
export #声明环境变量
sysctl -p #刷新内核配置文件,修改内核参数
systemctl #start stop restart status(当前状态) enable(开机自启) disable(关闭开机自启)
磁盘
df -Th #查看磁盘使用情况,-T显示文件系统类型,-h人性化显示
fdisk -l #查看磁盘信息 p m n d q w
lsblk #查看系统有哪些分区
blkid #查看分区的文件系统格式
swapon -s #查看所有交换分区
pvs vgs lvs #查看物理分区和逻辑卷组,查看那逻辑卷组,查看逻辑卷
vgcreate vgremove vgextend #创建,删除,修改逻辑卷组
lvcreate lvreove lvextend #创建,删除,修改逻辑卷组
mkfs.xfs(ext4) #将分区格式化文件系统
partprobe #刷新分区
mount -a #挂载,unmount,取消挂载,mount -a 刷新配置/etc/fstab/
fdisk -l 查看磁盘情况,mount -p /dev/shh1(U盘) /home/usb 挂载到home目录下的usb
# 系统
hostname #查看主机名
uname -r #查看该系统的版本号
free -h #查看内存信息,下文详解
lscpu #查看cpu信息
uptime #查看系统负载,当前时间,系统已运行时间,当前在线用户,最近1,5,15分钟平均系统负载
cal #查看日历
date -s #查看系统时间,-s 修改系统时间
date '+%Y-%m-%d' date "_%Y-%m-%d %H:%M:%S"
ntpdate #时间同步
clock -w #修改系统时间后,将系统时间写入cmos中
hwclock #查看硬件时间
lsmod #查看已加载的内核模块,ls /lib/modules/'uname -r'/内核模块存放
getconf LONG_BIT #查看当前系统是32位还是64位
用户
who #查看活动用户
w #查看活动用户在做什么
users #查看当前登入的用户
id #查看指定用户信息
last #查看用户登入日志
useradd #新建用户,有很多新建用户的所属选项可以直接passwd修改
/etc/passwd 查看用户
usermod #修改用户-L将用户锁定无法登入,-u解锁
userdel -r #删除用户,并把家目录和邮件目录全部删除
groupadd #新建组,groupdel 删除组:删除的不能是用户的基本组
gpasswd -a -d #管理组-a把用户添加到组,-d把用户从组中删除
visudo #修改sudo配置文件
sudo -u #提权,-u 找指定用户提权,前提是visudo中有配置
su - #切换登入,su加-
网络
nc ip port #检测端口是否开启
telnet ip port #检测端口是否开启,远程登入
route -n #查看路由表
ifup ens33 #激活网卡
wget -P #下载,-P 指定下载到某个目录,wget -P /opt https://ww.baidu.com
scp -r #文件传输和拉取-r 目录传输, scp -r a.zip root@ip:/opt/ scp -r root@ip:/opt/a.zip .
curl -I #字符浏览器,curl -I 查看请求头
nslookup #nslookup www.baidu.com,查询指定域名的DNS解析
host #测试dns解析,host www.baidu.com
traceroute -I #tarcerroute -I www.baidu.com ,追踪数据包的路由过程
dig #dig www.baidu.com,#查询域名的DNS解析
命令选项
w #查看活动用户,在做什么
pkill -kill -t pts/0 #踢掉某个终端连接的用户
ps -ef | grep pts | grep bash | grep -v grep #查看有几个活动用户和pid
kill -9 pid #踢掉某个终端链接的用户
date
date #查看系统时间
date +%Y%m%d%H%S #当前系统时间
date -s "1995-10-20 11:10:00" #修改系统时间格式
clock -w #修改系统时间后,将系统时间写入cmos中
lsof
lsof #列举系统中被打开的文件
-i:80 #显示使用80端口的进程
-u root #显示以root运行的程序
-c php-fpm #显示php-fpm进程打开的文件
ls
-a #查看隐藏文件
-l #显示详细信息
-d #显示目录本身属性
-R #递归显示
-u #显示文件或目录最后被访问的时间,-t以修改时间排序
cp
-r #递归复制整个目录
-a #复制时保留源文档的所有属性(包括权限,时间等),常用于备份
-p #连同属性一起复制,而不是使用默认属性
-f #强制复制,如果要强制覆盖\cp -rf xxx xxx
zip和tar
zip etc.zip -r /etc/ #-r:压缩目录,不使用-r只能压缩文件
unzip etc.zip -d /opt/ #-d:指定解压目录
tar -zcf etc.tar.gz /etc #压缩并归档,使用gzip的方式压缩
tar -xf etc.tar.gz -C /opt #-C:指定解压目录
free
free -h #查看内存信息,-h人性化可读显示,mem:内存,swap:交换分区
total(内存总量) used(已用内存容量) free(剩余容量)
命令行
查看系统信息
cat /etc/redhat-release #查看系统版本
cat /proc/cpuinfo #查看cpu详细信息
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l #查看物理CPU个数
cat /proc/cpuinfo | grep "cpu cores" | uniq #查看每个物理cpu中的core的个数(几核)
cat /proc/cpuinfo | grep "processor" | wc -l #查看逻辑cpu的个数
#总核数=物理cpu格式×每课物理cpu的核数
#总逻辑CPU数=物理CPU×每颗物理CPU的核数×超线程数
cat /proc/meminfo #查看内存详细信息
cat /proc/meminfo | grep MemTotal #查看内存总量
cat /proc/meminfo | grep MemFree 查看空闲内存量
cat /etc/resolv #查看本机dns
源码安装软件后添加环境变量
export PATH=$PATH:/命令路径
源码编译安装
./configure --prefix=指定安装目录 && make && make install
非交互式新建用户并配置密码
useradd tp && echo 123 | passwd --stdin tp
统计日志访问量前五的ip
cat file | awk '{print $1}' | sort | uniq -c | sort -r | head -5
统计ip建立了多少个连接(每个请求会启动一个进程)
netstat -ntu | tail -n +3 | awk '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sorn -r
统计连接成功的ip
netstat -na | grep 'ESTABLISHED' | awk '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -r
端口转发
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8000
查看有那些ipset表
firewall-cmd --get-ipsets
查看ip_ssh表内的ip
firewall-cmd --info-ipset=ip_ssh
校验批量文件
yum -y install diff
find /sbin/ -type f | xargs md5sun > sbin.md3 #批量生成md5值文件
find /sbin/ -type f | xargs md5sum > sbin.md5_2 #再次生成md5文件用于校验
diff sbin.md5 sbin.md5_2 #对比
echo $? 通过返回值进行对比,如果md5对比一致返回0
校验单个文件
md5sum /etc/passwd < passwd.md5 #生成md5值文件
md5sum /etc/passwd -c passwd.md5 #校验
echo $? #如果有修改awk取修改$2查看是哪些文件被修改
命令行写for
for i in $a; do echo $i ; done
命令行写if
if [ -d /opt/ ] ;then echo yes; else echo no ;fi
简单判断
[ $? -ne 0 ] && echo 1
命令行添加crontab
(crontab -l ; echo "* * * * * echo 1" ) | crontab
免密登入
#生成密钥对(/root/.ssh生成id_rsa,pub公钥和id_rsa私钥)
ssh-keygen -t rsa #基于rsa加密,直接回车到底
#发送私钥
ssh-copy-id root@192.168.1.31
其他
linux重要文件详解
/etc/passwd #用户
/etc/group #组
/etc/shadow #密码
/etc/gshadow #组密码的影子文件
/boot/vmlinuz #内核文件
/etc/rc.d/rc.local #系统初始化以及服务启动完,执行的最后一个脚本
/etc/hosts #本地解析文件
/etc/hosts.allow #允许访问的主机
/etc/hosts.deny #拒绝访问的主机
/etc/resolv.conf #dns服务器
/etc/fstab #开机挂载目录
/etc/inittab #规划控制启动的详细过程
/etc/sudoers #sudo配置文件
/etc/profile #全局系统环境配置和变量
/etc/sysconfig/network-scripts/* #网卡文件
/etc/bashrc #全局系统环境配置和变量,别名
/etc/pam.d/* #可插拔认证模块
/etc/init.d/* #服务开机启动脚本
/etc/rc.d #启动,或者改变运行级别的scripts目录
/etc/rc.d/init.d/*
/etc/inittab
/etc/skel #默认创建用户时,把该目录拷贝到家目录下
/sbin/* #单用户模式可用的必要命令(可执行文件),普通用户无法执行
/bin/ * #单用户模式可用的必要命令(可执行文件),面向所有用户
/usr/sbin/* #非必要的可执行文件(在单用户模式不需要),大量网络服务守护进程
/usr/bin/* #非必要的可执行文件(在单用户模式不需要);面向所有用户
其他概念理解
cookie:在客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现session的一种方式
session:在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群,数据库和文件中
linux在32位编译好的软件在64能跑,在64位编译好的软件32位不一定能跑,所以在安装系统的时候要统一,最好用64位