注意:Linux 严格区分大小写
创建用户
# Centos
# 创建用户 创建密码 添加 sudo docker 组权限
USERNAME=zhang
adduser ${USERNAME}
echo 123 | sudo passwd ${USERNAME} --stdin &>/dev/null
usermod -aG wheel ${USERNAME} && usermod -aG docker ${USERNAME}
# Ubuntu
USERNAME=zhang
useradd -d /home/${USERNAME} -s /bin/bash -m ${USERNAME}
echo "${USERNAME}:123" | chpasswd
usermod -aG sudo ${USERNAME} && usermod -aG docker ${USERNAME}
# 把 zhang 移除组 wheel
gpasswd -d zhang wheel
#删除用户 zhang
sudo userdel -r zhang
配置sudo免密
sudo vim /etc/sudoers
zhang ALL=(ALL:ALL) NOPASSWD: ALL
踢掉登录的用户
w
pkill -kill -t pts/1
后台运行与查看日志
nohup ls &
tail -f nohup.out
buff/cache占用过多清理
echo 1 > /proc/sys/vm/drop_caches #清除pagecache。
echo 2 > /proc/sys/vm/drop_caches #清除回收slab分配器中的对象,包括目录项缓存和inode缓存。
echo 3 > /proc/sys/vm/drop_caches #清除pagecache和slab分配器中的缓存对象
快捷方式
nmtui #图形界面修改网卡信息
pwd #查看当前路径
df -h # 查看使用空间大小
free -lh #查看内存使用情况
ll -tr /etc #按照时间顺序反向排序 -t time 时间 -r reverse 反向
lsof -i:22 #查看端口对应的服务
less -N /etc/services
-N 代表显示行数
-- 方向键上下翻行
-- 空格向下翻页 字母b向上翻页
-- / 搜索 n 重复搜索 shift+n 反向搜索 q 退出
whereis nginx #查看命令路径及文件
which mv # 查看显示命令路径信息
ctrl+a #把光标快速移到前头
ctrl+e #把光标快速移到后头
ctrl+方向左右箭头 #光标按单词快速移动:
ctrl+w #把空格字符串整体进行删除(剪切)
ctrl+u #删除光标位置到前头内容(剪切)
ctrl+k #删除光标位置到后头内容(剪切)
ctrl+y #粘贴剪切的内容
ctrl+r #快速搜索之前使用过的命令
du查看目录大小/sort排序
sort #排序命令
sort -n #按照数值进行排序
sort -k1 #按照指定第1列进行排序
cat 1|sort -n -k2 #查看文件 排序 -n以数字排序 -k2以第2行数字开始排序
du -sh /*|sort -h #快速找到哪个目录占用空间大并排序
du -sh /var/* |sort -h #查看var下面占用空间大的目录
du -sh .[!.]*|sort -hr #查看文件夹下面.开头的文件大小 并排序
find搜索
find 路径信息 -type 文件类型 -name '文件名'
find /etc -type f -name zhang.txt
find /etc -type f -iname zhang.txt -iname 忽略名称大小写
find /tmp -type f -size +100 #找出tmp目录下文件大于100K的文件
find /tmp -type f -size -80 #找出tmp目录下文件小于80K的文件
find /tmp -type f -size +1M #找出tmp目录下文件大于1M的文件
# -maxdepth 2 根据目录层级查找 1代表当前层 2代表查找当前层和下一层
find /mnt -maxdepth 2 -type f -size +10
find /opt/ -maxdepth 1 -type f -perm 644 # 根据文件权限来寻找
find / -type f -inum 2110038 #通过inode信息查找
find / -name 文件名 #全盘查找文件,文件名后面加 * 就是模糊查找
#通过xargs把找到的信息 显示为一行
[root@master01 /zhang]# ] find /zhang/ -type f -name '*.txt'|xargs
内容输出为一行
[root@master01 /zhang]# ] cat 123.txt|xargs -n2
每行显示两个内容
#筛选出文件拷贝到新的目录
find /zhang -type f -name '*.txt'|xargs cp -t /zhang01
find /zhang/ -type f -name '1*' |xargs rm #删除信息
find /zhang/ -type f -mtime +10 -delete #删除10前的数据 -mtime代表修改时间 +10代表10天前
find /zhang/ -type f -mtime +10 #查看10天前数据
find /zhang/ -type f -mtime -10 #查看最近10天数据
find /zhang/ -type f -mtime 10 #查看前面第7天数据
tree查看目录结构
tree /opt --查看指定目录下的数据和结构(有目录有文件)
tree -L 2 /opt --查看目录下两层的信息(有目录有文件)
tree -d /opt --只显示目录结构信息
查看IP与系统版本
ifconfig 或 ip addr 或 ip a #查看内网ip
curl cip.cc #查看公网ip
cat /etc/redhat-release #查看系统版本
uname -a #查看内核所有信息
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #查看网卡配置信息(自建主机用)
cat /etc/hostname #centos7主机名称配置文件路径
hostnamectl set-hostname 新名称 #centos7主机修改名称
修改编码utf-8/中文显示
[root@master01 /]# ] echo $LANG
en_US.UTF-8
vim /etc/locale.conf #修改编码 修改为支持中文显示
LANG=zh_CN.UTF-8
source /etc/locale.conf #重新加载文件
#命令直接修改,还是需要重新加载文件
localectl set-locale LANG=zh_CN.UTF-8
命令提示符优化\PS1
[root@master01 ~]# echo $PS1
[\u@\h \W]\$
vim /etc/profile #添加变量
#设置显示完整路径 把\W 改成小写 \w
export PS1='[\u@\h \w]\$ '
#设置颜色
export PS1='\[\e[32;1m\][\u@\h \w]\$ \[\e[0m\]] '
source /etc/profile #重新加载文件
etc目录
vim /etc/issue #在里面设置内容 登录前 提示
vim /etc/motd #在里面设置内容 登录后 提示
vim /etc/hosts #建立名称和地址对应关系
vim /etc/fstab #磁盘设备开机自动挂载
vim /etc/rc.local #文件中命令信息,开机自动执行
环境变量\PATH
#查看环境变量
[root@master01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
vim /etc/profile #配置变量信息和别名信息
PATH=$PATH:/opt/kubernetes/bin #在profile文尾添加变量信息
[root@master01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/kubernetes/bin:/root/bin
别名设置\alias
/etc/profile == /etc/bashrc #所有用户生效
~/.bashrc == ~/.bash_profile #指定用户生效
alias #查看系统默认别名设置
alias 别名名称='命令信息' #临时设置别名
alias catnet='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
unalias 别名名称 #取消设置别名
unalias catnet
vim /etc/profile #永久设置别名,添加下面一行内容
alias catnet='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
source /etc/profile #重新加载文件
设置好后,直接输入 catnet 就可以直接显示ifcfg-eth0内容
yum解释
ll /etc/yum.repos.d #查看yum源目录
#阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum repolist #查看可用源列表
#运行以下命令生成缓存
yum clean all
yum makecache
yum install bash-completion #按tab键无法补齐命令,需要安装此软件
rpm解释
rpm -qa sl # 查询是否安装sl -q表示查询 -a表示所有
rpm -qa |grep 软件名 #查询已安装软件
rpm -ql sl # 查看软件包有哪些文件 -l表示列表显示
rpm -ivh 软件包名称.rpm #安装软件 -i install安装 -v 显示过程 -h human以人类可读方式显示
rpm -Uvh 软件包名称 #升级
rpm -e 软件名称 --nodeps #卸载软件
which ssh #查看命令位置
rpm -qf /usr/bin/ssh #通过路径+命令 查询文件全名 -f代表文件名字
rpm -qf `which ssh` #直接通过 ` 反应号查出文件全名 先执行反引号里面命令输出,在执行外面命令
查看日志文件\log
ll -h /var/log/ #查看日志目录文件
head -5 /var/log/messages #查看前5行内容
tail -6 /var/log/messages #查看后6行内容
-f 文件信息追踪:文件被删除或者移走,需要重新追踪
-F 文件信息追踪:文件被删除或者移走,不需要重新追踪,文件恢复回来会继续追踪
tail -f /var/log/messages #程序日志/ -f 实时查看后10行数据
tail -f /var/log/secure #安全日志/用户登录信息
查看系统进程\ps
#R代表运行或等待运行 S代表睡眠但可以被唤醒
top # 查看实时进程
ps #查看系统进程信息
ps -aux #查看所有进程
ps -l # 查看当前用户进程
ps -ef #查看所有详细的进程信息
ps -ef|grep uwsgi #查看uwsgi运行情况
killall -9 uwsgi #关掉所有的uwsgi
查看系统硬件信息
cat /proc/cpuinfo #文件查看cpu数
lscpu #命令查看cpu几核
cat /proc/loadavg #文件查看负载情况
w #命令查看负载情况
cat /proc/meminfo #文件查看内存
free -h #命令查看内存
cat /proc/mounts #文件查看磁盘挂载信息
df -h #命令查看磁盘挂载信息
查看端口\ss\netstat
ss == netstat
yum install -y net-tools #安装netstat命令
ss -lntup #查看端口占用情况
ss -lntup|grep 22 #过滤端口22的服务
-l list --列表显示网络服务
-n number --以数字方式进行显示
-u udp --网络协议
-t tcp --网络协议
-p process --显示服务进程
修改文件权限\chmod
chown 修改拥有者 文件/目录 -R递归修改 修改拥有者
chown zhang.zhang /backup/
chown -R zhang.zhang /backup/
chgrp 修改所属组 -R递归修改
chgrp zhang hosts
chmod 修改 拥有者 所属组 其他人 权限 u/g/o +/-/= r/w/x 4 2 1
chmod a+x /etc/init.d/uwsgi.sh #添加执行权限
chmod 777 /etc/init.d/uwsgi.sh #添加 读 写 执行 权限
groups #查看属于组
gpasswd -a 用户 组 #添加组
#自己的可以强制写入文件,所属组和其他人不能强制写入
userdel -r 用户 #删除用户
chattr +i 123 #给文件加锁,使root用户也不能修改文件
lsattr 123 #查看是否加锁
chattr -i 123 #解除锁,可以继续编辑文件
创建连接\ln
ln -s 原连接 现连接 #软连接 类似于windows的快捷方式
[root@master01 /zhang]# ] ln -s test.txt test.txt_soft
ln 原连接 现连接 #硬链接 只文件用 修改一个其他的同步,删除一个其他的无影响, 通过ls -i 查看inode编号
[root@master01 /zhang]# ] ln test.txt test.txt_link
#通过inode查找文件位置
[root@master01 /zhang]# ] find / -type f -inum 2110038
#过滤etc下面有多少目录
[root@master01 /zhang]# ] ll /etc/ |grep -c "^d"
87
会话与作业
命令后面+ & 这个代表后台运行
jobs -l #查看运行的命令和pid
ctrl+z #挂起
ctrl+c #中断
fg #调回前台运行
bg #继续运行
kill 9 pid #强制停止任务
kill 15 pid #正常停止任务
压缩\tar
tar zcvf /zhang/test.tar.gz 指定要压缩的数据文件
z 压缩方式为 zip
c 创建压缩文件/压缩的意思
v 显示压缩过程
f 指定压缩包文件路径信息
x 提前文件/解压的意思
t 查看文件内容
# 压缩数据方法:
[root@master01 /zhang]# ] tar zcvf test.tar.gz test.txt
# 解压数据方法:
[root@master01 //zhang]# ] tar xvf test.tar.gz #解压到当前位置
[root@master01 //zhang]# ] tar xvf test.tar.gz -C /opt # -C 解压到指定位置
# 对比两个文件是否一致 diff 或者 vimdiff
[root@master01 //zhang]# ] diff /zhang/test.txt /tmp/test.txt
[root@master01 //zhang]# ] vimdiff /zhang/test.txt /tmp/test.txt
#查看压缩包否有文件
[root@master01 /zhang]# ] tar tf test.tar.gz
多CPU \tar pigz
# 安装pigz
sudo apt install pigz
# 多cpu压缩
sudo tar --use-compress-program=pigz -cvpf zhang.tar.gz ./zhang
# 多cpu解压
sudo tar --use-compress-program=pigz -xvpf zhang.tar.gz
# -C (大写)解压到指定位置
sudo tar --use-compress-program=pigz -xvpf zhang.tar.gz -C /home/zhang/test
# 如果文件太大就分成多段 100M 一个压缩
# 1.多cpu压缩
sudo tar --use-compress-program=pigz -cvpf zhang.tar.gz./zhang
# 2.分成多段 -b 100M 大小的一个压缩 -d 生成的文件名是数字 zhang00.tar.gz zhang01.tar.gz
split -b 100M zhang.tar.gz -d qin --additional-suffix=.tar.gz
# 3.多个cpu解压 分段的
cat zhang0* > zhang.tar.gz
sudo tar --use-compress-program=pigz -xvpf zhang.tar.gz
时间date
[root@master01 ~]# ] date
Wed Mar 17 14:51:19 CST 2021
[root@master01 ~]# ] date '+%F %T'
2021-03-17 14:54:07
#复制log后缀自动添加日期
[root@master01 /zhang]# ] cp 123.log 123.log-$(date "+%F_%T")
#显示2天前的时间
[root@master01 /zhang]# ] date +%F -d '-2day'
2021-03-15
#显示3天后的时间
[root@master01 /zhang]# ] date +%F -d '3day'
2021-03-19
#安装更新时间软件
[root@master01 /zhang]# ] yum install ntpdate.x86_64 te -y
#更新时间命令
[root@master01 /zhang]# ] ntpdate ntp1.aliyun.com
17 Mar 15:53:38 ntpdate[14857]: step time server 120.25.115.20 offset 38159595.622238 sec
系统运行级别解释
centos6(系统运行级别)
0 关机级别
1 单用户级别(重置密码)
2 多用户级别 无网络
3 多用户级别 有网络
4 预留
5 图形化级别
6 重启级别
runlevel #查看当前级别
init 级别数值 #临时修改
vim /etc/inittab #永久修改
centos7(target)运行下面命令获取7对应的6的运行级别
[root@master01 ~]# ll /usr/lib/systemd/system/runlevel*target
lrwxrwxrwx 1 root root 15 Apr 27 2020 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13 Apr 27 2020 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17 Apr 27 2020 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Apr 27 2020 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Apr 27 2020 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16 Apr 27 2020 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13 Apr 27 2020 /usr/lib/systemd/system/runlevel6.target -> reboot.target
systemctl get-default #查看运行级别
systemctl set-default graphical.target #修改为图形化级别
服务器添加新用户\useradd
#用户名存在home里面
useradd 用户名 #创建用户名
useradd zhang01
passwd 用户名 #创建密码
passwd zhang01 --回车输入密码
su 用户名 #切换root需输入密码,切换其他用户不用输入
userdel -r zhang #彻底删除用户和家目录信息
usermod -L myuser #禁止帐号myuser登录
usermod -U myuser #允许账号myuser登录
重启相关命令\reboot
reboot #现在重启
last reboot #查看服务器重启时间
shutdown -r now #现在重启
shutdown -h now #现在关机
shutdown -h 10 #10分钟后关机
shutdown #关机命令
shutdown -c #取消指令
系统启动流程
centos6
01.加电自检
检查服务器硬件是否正常
02.MBR引导
读取磁盘MBR存储记录信息,引导系统启动
03.grup菜单
选择启动内核、进行单用户模式重置密码
04.加载系统内核信息
可以更好的使用内核控制硬件
05.系统第一个进程运行起来 init(串行一个一个启动程序)
一个一个服务启动(启动慢)
06.加载系统运行级别文件 /etc/inittab
07.初始化脚本运行
初始化系统主机名称和网卡信息
08.运行系统特殊脚本
服务运行脚本
09.运行mingetty进程
显示开机登录信息界面
centos7
01.加电自检
检查服务器硬件是否正常
02.MBR引导
读取磁盘MBR存储记录信息,引导系统启动
03.grup菜单
选择启动内核、进行单用户模式重置密码
04.加载系统内核信息
可以更好的使用内核控制硬件
05.系统的第一个进程运行起来 systemd (并行启动程序)
服务启动的时候,同时一起启动(启动快)
06.读取系统启动文件
/etc/systemd/system/default.target
07.读取系统初始化文件
/usr/lib/systemd/system/sysinit.target
08.使服务可以开机启动
/etc/systemd/system 加载此目录中的信息,实现开机自动启动
09.运行mingetty进程
显示开机登录信息界面
上传下载文件
yum install -y lrzsz
rz -y #从windows上拷贝文件到linux
sz -y 数据文件 #从linux上拷贝文件到windows
定时任务\crontab
yum install cronie -y #安装定时任务 crontab文件包叫 cronie
systemctl status crond #查看定时服务是启动
tail /var/spool/cron/root #定时任务配置文件保存目录
tail -f /var/log/cron #定时任务日志文件
tail -f /var/spool/mail/root #定时任务执行命令报错,会发送邮件告知用户
#如不想产生邮件服务 可以关闭
systemctl stop postfix
ll /var/spool/postfix/maildrop/ #服务关闭后会 如果报错会产生小文件 占用inode数
crontab -l #查看任务列表
crontab -e #编辑定时任务信息
语法:
* * * * * 具体执行语句
分 时 日 月 周 执行语句
写法:
1.用数字表示时间信息
00 02 * * * 备份文件 #表示每天凌晨2点备份文件
2.利用特殊符号
* * * * * 备份文件
每分钟 每小时 每天 每月 每周
*/5 */8 */9 * * 备份文件
每隔5分钟 每隔8小时 每隔9天
01-05 02 * * * 备份文件
01到05分都执行
00 14,20 * * * 备份文件
14点和20点都执行
举例:
58 14 * * * cp /zhang/1 /opt/1.bak #每天14点58分拷贝文件
58 14 * * * /bin/sh shell.sh #执行shell.sh脚本
58 14 * * * cp /zhang/1 /opt/1.bak &>/dev/null #把输出到屏幕上信息保存到null,避免占用磁盘空间
58 14 * * * cp /zhang/1 /opt/1.bak >/dev/null 2>&1 #返回的信息不管是错误还是正确的都输出到/dev/null
*/5 * * * * /usr/sbin/ntpdate cn.pool.ntp.org >/dev/null 2>&1 #每隔5分钟同步时间
00 17 * * * /bin/sh /server/scripts/rsync_cron.sh >/tmp/rsync.log 2>&1 #17点执行sh脚本
修改时间时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime