# **以下操作为centos7系统为准,其他系统可能存在命令不存在等情况
vim基本操作:
:wq 保存退出
:q 退出
:q! 强制退出不保存
命令:
复制粘贴 yy p
删除 dd
:set nu 设置行号
:set nonu 销毁行号
G 移动到末行
gg 移动到首行
u 撤销
行数+shift+g 快速定位
shutdown -h now 立刻进行关机
shutdown -h 1 “hello,1分钟后会关机了”
shutdown -r now 现在重启计算机
halt 关机
reboot 重启
***(先使用sync命令在关机或者重启)sync 把内存数据同步到磁盘
su -用户名 更换用户
添加用户 useradd 用户名
指定密码 passwd
显示当前用户所在目录 pwd
删除用户保留目录 userdel 用户名
删除用户不保留目录 userdel -r 用户名
查询用户信息 id 用户名
查询当前用户信息 whoami
用户组 :类似于角色,系统可以对有共性/权限的多个用户进行统一管理
新增组 groupadd 组名
删除组 groupdel 组名
增加用户直接添加进组 useradd -g 用户组 用户民
运行级别
0:关机
1:单用户
2:多用户没有网络状态
3:多用户有网络状态 multi-user.target
4:系统未使用保留用户
5:图形界面 graphical.target
6:系统重启
命令:init[0123456]
systemctl get-default 显示现在的运行级别
systemctl set-default TARGET.target 更改运行级别
找回root密码 重启按e 在linux16开头行 最后加上 init=/bin/sh ctrl+x进入单用户模式 输入mount -o remount,rw/
输入passwd 输入touch /.autorelabel 输入exec /sbin/init
man[命令或配置文件] (man ls)
help命令:获得shell内置命令的帮助信息
pwd:显示当前工作的绝对路径
cd~或者cd: 回到自己的家目录
cd.. 回到当前目录的上一级
mkdir -p 要创建的目录 创建多级项目
rmdir 要删除的目录 删除目录
rm -rf 删除整个目录
touch 文件名 创建空文件
cp [-r] source dest 拷贝文件
强制覆盖不提示的方法 :\cp [-r] source dest
rm [-r/-rf] 要删除的文件或目录 删除文件或目录(-rf 强制删除不出提示)
mv oldNameFile newNameFile 重命名
mv /temp/movefile /targetFolder 移动文件
cat [-n] 要查看的文件 查看文件内容
cat -n 文件内容 | more (进行交互)
more 要查看的文件 :以全屏的方式按页显示文本文件的内容
less 要查看的文件 : 根据显示需要加载内容,对于大型文件具有较高的效率
echo [] [输出选项] 输出内容到控制台
head -n 数字 文件 用于显示文件开头部分内容,默认为10行 数字指代任意行数
tail -n 数字 文件 用于显示文件结尾部分内容,默认为10行 数字指代任意行数
tail -f 文件 实时追踪文档的所有更新
写入覆盖
写入追加
CTRL+c 退出
ls -l > 文件 列表的内容写入文件a.txt 中
ls -al >> 文件 列表内容追加到文件aa.txt的末尾
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
echo 内容 >> 文件 写入追加
ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接
history 查看已经查看过历史命令
date 显示当前时间
date + %Y 显示当前年份
date + %m 显示当前月份
date + %d 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
date -s 字符串时间 设置日期
cal [选项] 显示选项年的日历
find [搜索范围] [选项]
选项:
{-name<查询方式>:按照指定的文件名查找模式查找文件
-user<用户名>:查找属于指定用户名的文件
-size<文件大小>:按照指定的文件大小查找文件}
locate 搜索文件 快速定位文件路径 (locate指令无需遍历整个文件系统,第一次运行时,必须使用updatedb指令创建locate数据库)
which 指令 可以查看某个指令在哪个目录下
grep过滤查找,管道符 | ,表示将前一个命令的处理结果输出并传递给后面的命令处理
grep [选项] 查找内容 源文件
选项:
{-n 显示匹配行及行号
-i 忽略字母大小写}
gzip 文件 压缩文件,只能将文件压缩成.gz文件
gunzip 文件.gz 解压文件命令
zip [选项] xxx.zip 将要压缩的内容 压缩文件和目录的命令
-r:递归压缩,及压缩目录
unzip [选项] xxx.zip 解压缩文件
-d<目录>:指定解压文件的存放目录
tar [选项] xxx.tar.gz 打包内容 最后打包的文件是.tar.gz的文件 (压缩 -zcvf ,解压 -zxcf)(解压指定位置:tar -zxvf /home/myhome.tar.gz -C /opt/tmp2)
选项 :
{-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件}
ls -ahl 查看文件所有者
chown 用户名 文件名 修改文件所有者
chmod 修改文件或目录的权限
chown newowner 文件、目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
crontab 进行定时任务的设置 (给任务权限 chmod u+x 文件)
crontab [选项]
选项:
{-e:编辑crontab任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务}
service crond restart 重启任务调度
at命令 一次性定时计划任务 (使用at命令时一定要保证atd进程的启动)(ps -ef | grep atd)
at [选项] [时间]
选项:{-m:当前指定任务被完成后,将给用户发送邮件,即使没有标准输出
-I:atq的别名 (查看)
-d:atrm的别名 (删除)
-v:显示任务将被执行的时间
-c:打印任务的内容到标准输出
-V:显示版本信息
-q<队列>:使用指定队列
-f<文件>:从指定文件读入任务而不是从标准输入读入
-t<时间参数>:以时间参数的形式提交要运行的任务}
CTRL+d 结束命令输入
查看所有挂载 情况 lsblk 或 lsblk -f
fdisk /dev/sdb 分区命令
mkfs -t ext4 /dev/sdb1 格式化磁盘
mount /dev/sdb1 目录 挂载
umount 卸载
用命令行挂载后重启会失效
永久挂载 : 通过修改/etc/fstab 实现永久挂载
df -h 查询整体磁盘
du -h /目录 查询指定目录的磁盘占用情况
{-s:指定目录占用大小汇总
-h:带计量单位
-a:含文件
--max-depth=1 :子目录深度
-c :列出明细同时,增加汇总量 }
查看主机名 hostname
ps -a :显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
kill [选项] 进程号 通过进程终止进程 (-9:表示强制进程立即终止)
killall 进程名 通过进程名终止进程,也支持通配符
pstree [选项] 可以更加直观的来查看进程信息 (-p:显示进程pid -u:显示进程的所属用户)
service管理指令
top [选项] 在执行一段时间可以更新正在运行的进程
{-d秒数:指定top命令每隔几秒更新,默认三秒
-i:使top不显示任何闲置或僵死进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态}
netstat [选项] 查看系统网络情况
{-an:按一定顺序排列输出
-p:显示哪个进程在调用}
rpm -qa | grep 软件名 查看已安装软件的安装包
rpm -qi 软件名 查看软件信息
rpm -ql 软件名 查看安装过后的位置
rpm -qf 文件全路劲名 查看文件归属
rpm -e RPM包的名称 (rpm -e --nodeps RPM包的名称 强制删除)
rpm -ivh RPM包全路径名称
yum list | grep xx软件列表 查询yum服务器是否有需要安装的软件
yum install 安装包 下载安装软件
shell编程
以 #!/bin/bash 开头
shell变量
系统变量 : HOME PWD SHELL USER等 (显示当前shell中所有变量shell)
定义变量: 变量名 = 值
撤销变量: unset 变量
声明静态变量: readonly 变量 (不能被unset)
A=date
运行里面的命令,并把结果返回给变量A
A=$(date)等价于反引号
设置环境变量
export 变量名=变量值 将shell变量输出为环境变量/全局变量
source 配置文件 让修改后的配置信息立即生效
echo $变量名 查询环境变量的值
位置参数变量 :
$n n为数字,0代表命令本身,1-9代表第一到第九个参数,十以上的参数,用{}
$* 代表命令行中的所有参数,把所有参数看作一个整体
$@ 代表命令行中的所有参数,把每个参数区别对待
$# 代表命令行中所有参数的个数
预定义变量 : 事先定义好的变量
●
$! 后台运行的最后一个进程的进程号PID
$? 最后一次执行的命令的返回状态(结果为0则说明正确执行,非0则不正确)
运算符
- $((运算式子))
- $[运算式]
- expr m + n
判断语句
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
-r 有读的权限
-w 有写的权限
-x 有执行的权限
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在且是一个目录
read读取控制台输入
read(选项) 参数
选项{
-p 指定读取值时的提示
-t 指定读取值时的时间}
函数
basename [pathname] [suffix] basename命令会删掉所有的前缀包括后一个(/)字符,然后将字符串显示出来
dirname 和basename相反
自定义函数
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=zd081400
#备份数据库名
DATABASE=mysql
#创建目录备份
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB\_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理为 tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除十天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.ge" -exec rm rf {} \;
echo "备份数据库${DATEASE}成功"
30 2 * sh mysql_db_backup.sh
日志
/var/log 目录就是系统日志文件的保存位置
boot.log :系统启动日志
cron:系统相关定时任务日志
cups:打印信息日志
dmesg:内核自检 用 dmesg 命令
btmp:错误登录 用 lastb 命令
lasllog:最后一次登录 用 astlog 命令
mailog:记录邮件
message:liunx系统信心***
secure:验证和授权方面的信息
wtmp:永久记录所有用户的登录,注销信息,同时记录系统的后动、关机和重启事件,用 last 命令
ulmp:记录已登录用户的信息
日志服务rsyslogd
ps -aux | grep "rsyslog" | grep -v "grep" 查询linux中的rsyslogd服务是否启动
systemctl list-unit-files | grep rsyslog
日志编辑文件格式*.* 第一个*代表日志类型 第二个*代表日志级别
日志文件格式
- 事件产生的时间
- 产生时间的服务器的主机名
- 产生事件的服务名或程序名
- 时间的具体信息
日志轮替
在/etc/logrotate.conf 配置文件中写入轮替策略
在/etc/logrotate.d/目录中新建日志轮替文件
查看内存日志
journalctl 查看全部
journalctl -n 3 查看最新3条
journalctl --since 19:00 --until 19:10 查看起始时间内
journalctl -p err 报错日志
journalctl -o verbose 日志详细内容
journalctl_PID=1234 _COM=sshd 查看包含这些参数的日志