Linux基础笔记


文章目录

  • 一. Linux目录结构
  • 二. vi 和 vim
    • 1. 三种方式
    • 2.基础操作
  • 三. Linux基础命令
    • 1. 关机&重启
    • 2. 登录&注销
    • 3. 用户管理
    • 4. 运行级别
    • 5. 帮助指令
    • 6. 文件目录指令
    • 7. 压缩&解压
    • 8. 组管理
    • 9. 权限管理
    • 10. 定时任务调度
    • 11. 磁盘分区&挂载
    • 12. 网络配置
    • 13. 进程管理
    • 14. RPM和YUM
  • 四. JAVA
    • 1. JDK
    • 2. tomcat
    • 3. mysql
  • 五. Shell编程
    • 1. Shell执行
    • 2. Shell变量
    • 3. 设置环境变量
    • 4. 位置参数变量
    • 5. 预定义变量
    • 6. 运算符
    • 7. 流程控制
    • 8. read读取控制台输入
    • 9. 函数
  • 六. 日志
    • 1. 日志管理服务 rsyslogd
    • 2. 日志轮替
    • 3. 查看内存日志
    • 4. 备份$恢复
  • 七. Linux面试题


一. Linux目录结构

  • /bin 存放经常使用的命令
  • /sbin 存放系统管理员使用的系统管理程序
  • /home 存放普通用户的主目录,一般目录名是自己账户名
  • /root 系统管理员的主目录
  • /lib 系统开机所需要的动态连接共享库,几乎所有应用程序都需要用到这些共享库
  • /lost+found 一般为空,非法关机后会存放一些文件 (默认被隐藏 ls 可以看到)
  • /etc 所有系统管理所需要的配置文件和子目录,如安装 mysqlmy.conf
  • /usr 用户的很多应用程序和文件都放在这,安装之后的文件
  • /boot 存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /proc 虚拟的目录,是系统内存的映射,访问这个目录可以获取系统信息
  • /srv 存放一些服务启动之后需要提取的数据
  • /syslinux2.6 内核的一个大的变化,该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs
  • /temp 存放一些临时文件
  • /dev 类似于 windows 的设备管理器,把所有的硬件用文件的形式存储
  • /media linux 系统会自动识别一些输入设备并把这些设备挂载到这个目录下
  • /mnt 为了让用户临时挂载别的文件系统,可以将外部的存储挂载到 /mnt/ 上,然后就可以查看了
  • /opt 给主机额外安装软件(安装包)摆放的目录,约定放到这里
  • /usr/local 一般通过编译源码方式存放安装好的软件
  • /var 存放不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
  • /selinux 一种安全子系统,能控制程序只能访问特定文件,有三种工作模式,可以自行设置

二. vi 和 vim

1. 三种方式

  • 正常模式:(默认),只能上下左右,删除,复制粘贴
  • 插入模式:按下 i, I, o, O, a, A, r, R 等任何一个字母之后会进入编辑模式
  • 命令行模式:输入 :或者/ ,读取,存盘,替换,离开vim, 显示行号等操作
    • :wq 保存退出
    • :q 退出
    • :q! 强制退出,不保存

从其他模式切换到一般模式时点击 esc

2.基础操作

  • yy:拷贝当前行,拷贝当前行向下的5行:5yy
  • dd:删除当前行
  • /关键字:命令行下直接回车查找关键字,输入 n 就是查找下一个匹配项
  • :set nu:设置文件的行号,:set nonu设置取消文件的行号
  • 一般模式下,
    • G:定位到文档最末行
    • gg:定位到文档首行
    • u:撤销
    • 行号+G 或者 行号+gg:定位到行号的位置

三. Linux基础命令

1. 关机&重启

  • shutdown -h now:立刻关机
  • shutdown -h 1:1分钟后关机
  • shutdown -r now:立刻重启
  • halt:关机
  • reboot:重启
  • sync:把内存的数据同步到磁盘

! 注意在重启和关机之前首先运行 sync 命令

2. 登录&注销

  • su - 用户名:切换用户,从权限高用户切换到权限低用户不需要密码,反之需要密码,需要返回到原来用户时使用 exit/logout指令
  • logout:注销用户,在图形运行及比如无效

3. 用户管理

  • useradd 用户名:添加一个用户,默认该用户的家目录在 /home(以后用该用户登录时会自动切换到这个目录),
  • useradd -d 指定目录 新的用户名:添加一个用户在指定目录
  • passwd 用户名:不写用户名等于修改当前登录用户的密码,指定修改密码
  • userdel 用户名:删除用户,但保留家目录
  • userdel -r 用户名:删除用户,不保留家目录
  • id 用户名:查询用户信息
  • who am i:显示第一次登录的用户

用户组:系统可以对有共性/权限的多个用户进行统一的管理

  • groupadd 组名:新增组
  • groupdel 组名:删除组
  • useradd -g 用户组 用户名:增加用户时直接加上组,如果没指定用户组,会默认创建一个和用户名同名的组,并把该用户放到该组
  • usermod -g 用户组 用户名:修改用户的组

用户和组相关文件

  • /etc/passwd 文件:用户的配置信息,记录用户的各种信息
    • 每行的含义:用户名:口令:用户标识号:组标识号:注释行描述:主目录:登录Shell
  • /etc/shadow 文件:口令的配置文件
    • 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group 文件:组的配置文件,记录 Linux 包含的组的信息
    • 每行的含义:组名:口令:组标识号:组内用户列表

使用 vim 文件名可以查看文件信息

4. 运行级别

0:关机

1:单用户(找回丢失密码)

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用3, 5,也可以指定默认运行级别

  • init 运行级别:切换不同的运行级别
  • systemctl get-default:查询当前运行级别
  • systemctl set-default TARGET.target:设置运行级别,CentOS7之后,在 /etc/inittab文件中进行了简化,multi-user.target:analogous to runlevel 3,graphical.target:analogous torunlevel 5

5. 帮助指令

  • man [命令或配置文件]:获得帮助信息
  • help 命令:获得 shell 内置命令的帮助信息

linux 下,隐藏文件是以 . 开头的

6. 文件目录指令

  • pwd:显示当前工作目录的绝对路径

  • ls [选项] [目录或文件]:常用选项,-a:显示当前目录所有文件和目录包括隐藏,-l:以列表方式显示信息

  • cd [参数]:可以定位到绝对路径和相对路径,~ 表示回到自己家目录,root 会到 /root,tom 会到 /home/tom,… 表示回到当前目录的上一级目录

  • mkdir [选项] 要创建的目录:创建目录,选项 -p:创建多级目录

  • rmdir [选项] 要删除的目录:删除空目录,如果要删除非空目录,需要选项 -rf

  • touch 文件名称:创建一个空文件

  • cp [选项] source dest:把 source 拷贝到 dest,选项 -r 表示递归复制整个文件夹,\cp 表示强制覆盖不提示

  • rm [选项] 要删除的文件或目录:移除文件或目录,选项 -r:递归删除整个文件夹,-f:强制删除不提示

  • mv oldNameFile new NameFile:重命名文件,同级目录

  • mv /temp/movefile /targetFolder:移动文件

  • cat [选项] 要查看的文件:查看文件内容,选项 -n:显示行号,只能浏览文件不能修改,为了浏览方便一般加上管道命令 | more(把前面得到的结果交给下一个指令)

  • more 要查看的文件:按页显示文本文件的内容,操作:

    • 空格:下一页
    • Enter:向下一行
    • q:立刻离开 more,不再显示文件内容
    • Ctrl+F:向下滚动一屏
    • Ctrl+B:返回上一屏
    • =:输入当前行的行号
    • :f:输出文件名和当前行的行号
  • less 要查看的文件:和 more 类似,但支持各种显示终端,根据显示的需要加载内容,显示大型文件时效率高,操作:

    • 空格:向下翻动一页
    • [pagedown]:向下翻动一页
    • [pageup]:向上翻动一页
    • /字串:向下搜寻[字串],n:向下查找,N:向上查找
    • ?字串:向上搜寻[字串],n:向上查找,N:向下查找
    • q:离开 less
  • echo [选项] [输出内容]:输出内容到控制台

  • head 文件:查看文件头10行内容

  • head -n 5 文件:查看文件头5行内容

  • tail 文件:查看文件尾10行内容

  • tail -n 5 文件:查看文件尾5行内容

  • tail -f 文件:实时追踪该文档的所有更新,Ctrl+C退出

  • > 输出重定向和 >> 追加:后面如果文件不存在会自动创建

    • ls -l >文件:列表的内容写入文件(覆盖写)
    • ls -al >>文件:列表的内容追加到文件的末尾
    • cat 文件1 > 文件2:将文件1内容覆盖到文件2
    • echo “内容” >> 文件:将内容追加到文件尾

软链接也称为符号链接,类似于 windows 中的快捷方式,主要存放了链接其他文件的路径

  • ln -s[原文件或目录] [软链接名]:给原文件创建一个软链接
  • history [指令数]:查看[指令数]已经执行过的历史命令,也可以执行历史命令
  • !5:执行history中的编号为5的指令
  • date:显示当前时间
    • date +%Y:显示当前年份
    • date +%m:显示当前月份
    • date +%d:显示当前是哪一天
    • date “+%Y-%m-%d %H:%M:%S”:显示年月日时分秒
    • date -s:字符串时间,可以设置时间
  • cal [选项]:不加选项,显示本月日历
  • find [搜索范围] [选项]:从指定目录向下递归遍历各个子目录,将满足条件的文件或目录显示在终端
    • 选项:-name<查询方式>:按指定的文件名查找模式查找文件
    • -user<用户名>:查找属于指定用户名所有文件
    • -size<文件大小>:按照指定文件大小查找文件,+n大于,-n小于,n等于,单位 K, M, G
  • locate 搜索文件:快速定位文件路径,利用事先建立的所有文件和路径的数据库快速查找到文件,无需遍历整个文件系统,为了保证查询结果的准确度,必须定期更新locate时刻,第一次运行前,必须使用updatedb创建locate数据库
  • which 指令:查看某个指令在哪个目录下
  • grep [选项] 查找内容 源文件:过滤查找,一般和管道 | 一起用,
    • cat a.txt | grep “hello”:查找a.txt中有没有 “hello”,和 grep -n “hello” a.txt效果一样
    • 选项:-n:显示匹配行及行号,-i:忽略字母大小写

7. 压缩&解压

  • gzip 文件:压缩文件,只能将文件压缩为 *.gz 文件
  • gunzip 文件.gz:解压缩文件
  • zip [选项] XXX.zip 将要压缩的内容:压缩文件,选项 -r:递归压缩(压缩目录)
    • zip -r myhome.zip /home/:压缩/home目录及其包含的文件和子文件夹压缩
  • unzip [选项] XXX.zip:解压缩文件,选项 -d<目录>:指定解压后文件的存放目录,默认解压到当前目录
  • tar [选项] XXX.tar.gz 打包的内容:打包指令,最后打包后的文件是 .tar.gz 的文件
    • 选项:-c:产生 .tar 打包文件
    • -v:显示详细信息
    • -f:指定压缩后的文件名
    • -z:打包同时压缩
    • -x:解包 .tar 文件
    • tar -zcvf pc.tar.gz /home/pig/txt /home/cat.txt:将pig.txtcat.txt压缩为 pc.tar.gz,以逗号隔开
    • tar -zxvf /home/myhome.tar.gz -C /opt/tmp2:将 myhome.tar.gz解压到 /opt/tmp2目录下

8. 组管理

  • ls ahl:查看文件的所有者以及文件所在的组(创建该文件的用户)
  • chown 用户名 文件名:修改文件所有者
  • chgrp 组名 文件名:修改文件所在的组

9. 权限管理

  • ls -l 这个命令显示 -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
    • 第一列中:0-9位:
      • 0位是文件类型(d 目录, - 普通文件 , l 链接, c 字符设备文件,鼠标,键盘, b 块设备,如硬盘)
      • 1-3位确定所有者拥有该文件的权限 User
      • 4-6位确定所属组(同用户组)拥有该文件的权限 Group
      • 7-9位确定其他用户拥有该文件的权限 Other
      • 权限作用到文件 r:可读,w:可以修改,不代表可以删除,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除文件,x:可执行
      • 权限作用到目录 r:可以读取,ls查看目录结构,w:可以修改,对目录内创建+删除+重命名目录,x:可进入该目录
      • rwx可以用数字表示,r=4,w=2,x=1,rwx=7
    • 第二列:
      • 文件:硬连接数
      • 目录:子目录数
    • 第三列:文件所有者
    • 第四列:文件所属组
    • 第五列:文件大小(字节),如果是文件夹,显示 4096 字节
    • 第六列:最后修改日期
    • 第七列:文件名
  • chmod u=rwx,g=rx,o=x 文件/目录名:u:所有者,q:所有组,o:其他人,a:所有人(u,g,o的总和),第一种使用 +,-,= 变更权限,第二种使用数字变更权限,r=4,w=2,x=1
    • chmod 751:和上述相同
  • chown [选项] newowner 文件/目录:修改文件所有者,-R:如果是目录,则是其下所有文件或目录递归生效
  • chown [选项] newowner:newgroup 文件/目录:修改文件所有者和所在组,-R同上
  • chgrp [选项] newgroup 文件/目录:修改所在组,-R同上

10. 定时任务调度

  • crontab [选项]:定时执行特定命令,选项:
    • -e:编辑 crontab 定时任务
      • crontab -e 进入编辑定时任务,再编辑
      • 例如 */1 * * * * ls -l /etc/ > /tmp/to.txt:意思是每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt
      • 五个占位符*,第一个:一小时中的第几分钟 0-59
      • 第二个:一天中第几小时 0-23
      • 第三个:一个月中第几天 1-31
      • 第四个:一年中第几个月 1-12
      • 第五个:一周中星期几 0-7(0,7都是星期日)
      • 特殊符号: *:代表任何时间,第一个 * 就代表一小时中每一分钟都执行一次
      • ,:代表不连续的时间,如 0 8,12,16 * * *,代表在每天的 8:00,12:00,16:00执行一次
      • -:代表连续的时间范围,如 0 5 * * 1-6 ,代表周一到周六的5:00执行命令
      • */n:代表每隔多久执行一次,如 */10 * * * *,代表每隔10分钟执行一次命令
    • -l:查询 crontab 任务
    • -r:删除当前用户所有的 crontab 任务
  • vim XXX.sh:编辑shell脚本,执行时要先拥有执行的权限,再 ./XXX.sh进行执行
    • /1 * * * * /home/XXX.sh:每隔一分钟执行一次shell*脚本
  • at [选项] [时间]:一次性定时计划任务,执行一次就不执行了,使用 at 命令时,一定要保证 atd 进程的启动, ps -ef | grep atd检测atd进程,atd每隔60秒检查有没有作业,命令输入完毕后再输入 Ctrl + D 表示命令结束,选项:
    • -m:指定任务被完成后,会给用户发送邮件,即使没有标准输出
    • -i(大写):atq 的别名
    • -d:atrm的别名
    • -v:显示任务将被执行的时间
    • -c:打印任务的内容到标准输出
    • -V:显示版本信息
    • -q<队列>:使用指定队列
    • -f<文件>:从指定文件读入任务而不是从标准输入读入
    • -t<时间参数>:以时间参数形式提交要运行的任务
    • 时间:hh:mm的形式,如果时间过去就第二天执行,如 04:00
    • midnight(深夜),noon(中午),teatime(饮茶时间,一般下午4点)等
    • 12小时制,时间后加 AM(上午),PM(下午)
    • month day (月 日) 或 mm/dd/yy (年 月 日) 或 dd.mm.yy,如 04:00 2021-03-1
    • now + count time-units,time-units为时间单位,minutes,hours,days,weeks
    • today,tomorrow
  • atq:查看系统中没有执行的工作任务
  • atrm 任务号:删除任务号的任务

11. 磁盘分区&挂载

分区可以挂载到目录下,进入该目录就等于进入该分区

  • lsblk 或 lsblk -f:查看所有设备挂载情况

linux硬盘分为 IDE 硬盘和 SCSI 硬盘,目前基本 SCSI硬盘

IDE硬盘驱动器标识 hdx~hd 表示分区所在设备类型,x 为盘号(a基本盘,b基本从属盘,c辅助主盘,d辅助从属盘),~ 代表分区,前四个分区用1-4表示,是主分区或扩展分区,从5开始是逻辑分区,如 hda3表示第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示第二个IDE硬盘上的第二个主分区或扩展分区

SCSI硬盘标识 sdx~,sd 表示分区所在设备类型,其他用法和上面一样

  • fdisk /dev/硬盘标识:分区命令
    • m:显示命令列表,p:显示磁盘分区 同 fdisk -l,n:新增分区,d:删除分区,w:写入并退出,q:不保存退出

格式化分区之后该分区会被分配一个唯一的40位的UUID

  • mkfs -f ext4 /dev/分区标识:格式化磁盘,ext4是分区类型
  • mount 分区 目录:将分区挂载到目录上,用命令行挂载重启后会失效
  • unmount 目录或分区:取消挂载,卸载时先cd到其他目录

永久挂载,通过修改 /etc/fstab实现,添加完成后执行 mount -a 立刻生效

  • df -h:查询系统整体磁盘使用情况
  • du -h:查询指定目录的磁盘使用情况,默认当前目录
    • -s:指定目录占用大小汇总
    • -h:带计量单位
    • -a:含文件
    • –max-depth=1:子目录深度
    • -c:列出明细同时增加汇总值
  • tree 目录:以树状显示目录结构,如果没有tree指令用 yum install tree安装

12. 网络配置

修改配置文件来指定ip

  • vim /etc/sysconfig/network-scripts/ifcfg-ens33:进入配置文件

更改之后service network restart 或 reboot 刷新

  • hostname:查看主机名

/etc/hostname 文件配置修改主机名

设置 hosts 映射

  • windows:C:\Windows\System32\drivers\etc 指定
  • linux:/etc/hosts 指定

windows中使用 ipconfig /displaydns 查看本地DNS域名解析的缓存,ipconfig /flushdns 清理本地DNS域名解析缓存,浏览器访问一个域名时,先检查游览器缓存中有没有该域名解析的ip,没有就检查本地DNS域名解析的缓存,如果没有就检查本地hosts文件中有没有对应映射,如果没有就到域名服务DNS找

13. 进程管理

  • ps [选项]:查看目前系统中正在执行以及执行状况的进程

    • -a:显示当前终端的所有进程信息
    • -u:以用户的格式显示进程信息
    • -x:显示后台进程运行的参数
    • 显示的信息选项:PID:进程识别号
    • TTY:终端机号
    • TIME:此进程所消CPU时间
    • CMD:正在执行的命令或进程名
    • COMMAND:启动进程的命令和参数,太长会截断
    • -ef:以全格式显示当前所有进程
    • PPID:父进程ID
  • kill [选项] 进程号:通过进程号杀死进程

    • -9:强迫进程立即停止
  • killall 进程名称:通过进程名称杀死进程,也支持通配符,在系统因为负载过大而变慢时很有用

  • /bin/systemctl start 服务名称:重启服务

  • pstree [选项]:更直观查看进程信息

    • -p:显示进程 PID
    • -u:显示进程的所属用户

服务本质就是进程,运行在后台,通常监听某个端口,等待其他程序的请求,又称为守护进程

  • service 服务名 [start | stop |restart | reload | status]

CentOS 7.0 之后,很多服务不再使用service,而是systemctlservice管理的服务在 /etc/init.d中,也可以使用 setup

开机流程:开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行级别对应的服务

chkconfig可以给服务的各个运行级别设置自启动/关闭,指令管理服务在 /etc/init.d 查看。设置后需要 reboot

  • chkconfig --list [| grep xxx]
  • chkconfig 服务名 --list
  • chkconfig --level 级别名 服务名 on/off
  • systemctl [start | stop |restart |status] 服务名
    • systemctl设置服务自启动:指令管理的服务在 /usr/lib/systemd/system 中查看
    • systemctl list-unit-files [| grep 服务名]:查看服务开机启动状态
    • systemctl enable 服务名:设置服务开机启动
    • systemctl disable 服务名:关闭服务开机启动
    • systemctl is-enabled 服务名:查看服务是否自启动
    • 关闭或启动防火墙后立即生效(telent 测试 某个端口即可)
    • 只是临时生效,重启系统后会回归
    • 如果希望自启动或关闭永久生效,使用 systemclt [enable|disable] 服务名

打开防火墙同时需要打开端口

  • firewall-cmd -permanent --add-port=端口号/协议:打开端口
  • firewall-cmd -permanent -remove-port=端口号/协议:关闭端口
  • firewall-cmd --reload:重新载入才能生效
  • firewall-cmd --query-port=端口/协议:查询端口是否开放

  • top [选项]:top和ps很相似,都用来显示正在执行的进程,但top在执行一段时间会更新正在运行的进程
    • -d 秒数:指定每隔几秒刷新,默认3秒
    • -i:不显示任何闲置或僵死进程
    • -p:指定监控进程id监控某个进程的状态
    • 交互操作说明:P:以cpu使用率排序,默认就是这个
    • M:以内存的使用率排序
    • N:以PID排序
    • q:退出top
    • 监控特定用户:
      • 输入 u 回车,再输入用户名
    • 终止指定的进程:
      • 输入 k 回车,再输入进程号
  • netstat [选项]:查看系统网络情况
    • -an:按一定顺序排列输出
    • -p:显示哪个进程在调用

14. RPM和YUM

rpm 用于互联网下载包的打包及安装工具,包含在某些Linux分发版中,生成具有 .RPM 扩展名的文件,是 RedHat Package Manager(RedHat软件包管理工具),类似windowssetup.exe

  • rpm -qa:查询已安装的rpm列表
    • firefox-60.2.2-1.el7.centos.x8w6_64
    • 版本号:60.2.2-1
    • 适用操作系统:el7.centos.x8w6_64,表示 centos7.x的64位系统
    • rpm -q 软件包名:查询软件是否安装
    • rpm -qi 软件包名:查询软件包信息
    • rpm -ql 软件包名:查询软件包中的文件
    • rpm -qf 文件全路径名:查询文件所属的软件包
    • rpm -e RPM包的名称:卸载rpm包
    • rpm -e --nodeps RPM包的名称:强制删除rpm包
    • rpm -ivh RPM包全路径名称:安装RPM包
      • i=install 安装,v=verbose 提示,h=hash 进度条

Yum 是一个Shell前端软件包管理器,基于RPM包管理,能从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并一次性安装所有依赖

  • yum list:查询yum服务器是否有需要安装的软件
  • yum install xxx:安装指定的yum包

四. JAVA

1. JDK

  • vim /etc/profile:编辑环境变量
  • source /etc/profile:刷新环境变量

2. tomcat

  • ./startup.sh:进入解压目录的bin目录,启动tomcat
  • firewall-cmd --permanent --add-port=8080/tcp:开放8080端口

3. mysql

CentOS7.6自带Mysql数据库是mariadb,会和mysql冲突,要先删除

  • grep “password” /var/log/mysqld.log:查看mysql给用户设置的临时密码

五. Shell编程

Shell是一个命令行解释器,为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动,挂起,停止甚至是编写一些程序

1. Shell执行

要求

  1. 脚本以 #!/bin/bash 开头
  2. 脚本需要有可执行权限

执行方式

  1. 方式一,输入脚本绝对路径或相对路径,需要执行权限
  2. 方式二,sh+脚本,不需要执行权限

2. Shell变量

Linux Shell变量分为系统变量(如$HOME)和用户自定义变量

  • **set **:显示所有Shell变量

基本语法

  1. 定义:变量名=值
  2. 撤销:unset 变量
  3. 声明静态变量:readonly 变量,不能unset
  4. 规则:
    1. 不能以数字开头
    2. 等号两侧不能有空格
    3. 变量名一般大写
  5. 将命令返回值赋给变量
    1. A=`date`反引号,运行里面的命令返回结果给A
    2. A=$(date)

3. 设置环境变量

  • export 变量名=变量值:将shell变量输出为环境变量
  • source 配置文件:让修改后的配置信息立即生效
  • echo $变量名:查询环境变量值

配置文件在 /etc/profiles

多行注释 ;<

4. 位置参数变量

如果希望获取命令行的参数信息,就可以使用位置参数变量,如 ./mysql.sh 100 200,这个命令行可以在myshell脚本中获取到参数信息

基本语法

  • $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要大括号包含如 ${10}
  • $*:代表命令行中所有参数
  • $@:和上一个一样,但把每个参数区分对待
  • $#:代表命令行中所有参数的个数

5. 预定义变量

shell设计者预先定义好的变量,可以直接使用

  • $$:当前进程号(PID)
  • $!:后台运行的最后一个进程的进程号
  • $?:最后一次执行命令的返回状态,如果是0,表示上一个命令正确执行,非0表示上一个命令执行不正确

6. 运算符

  1. $((运算式)) 或 $[运算式] 或 expr m + n
  2. expr m - n
  3. expr *,/,%:乘除取余

7. 流程控制

  • [condition]:非空为true,可以使用 $?验证(0为true,大于1为false)

判断语句

  1. =:字符串比较
  2. 整数比较
    1. -lt 小于,-le 小于等于,-eq 等于,-gt 大于,-ge 大于等于,-ne 不等于
  3. 按照文件权限判断
    1. -r 读,-w 写,-x 执行
  4. 按照文件类型判断
    1. -f 文件存在且是一个常规文件
    2. -e 文件存在
    3. -d 文件存在是一个目录
if [ "ok" = "ok" ]
then 
	echo "equal"
fi
if [ 条件 ]
then
	
elif [ 条件 ]
then
fi
case $变量名 in
"值1")

;;
"值2")

;;
*)
echo "other..."
;;
esac
for语法1:
for 变量 in 值1 值2...
do
程序
done


例1:因为$*会把输入的参数当作一个整体,所以只会输出一句
输入 100 200 300 ,输出 num is 100 200 300
换成$@时会分别对待
for i in "$*"
do
	echo "num is $1"
done

for语法2:
for((初始值;循环控制条件;变量变化))
fo
程序
done
while语法
while [ 条件 ]
do
程序
done

8. read读取控制台输入

  • read(选项)(参数)
    • 选项:-p:指定读取值的提示符,-t:指定读取值时等待的时间(秒)
    • 参数:变量:指定读取值的变量名
read -p "请输入一个NUM1=" NUM1

9. 函数

系统函数:

  • basename [pathname] [suffix]
  • basename [string] [suffix]:删除所有前缀包括最后的一个/字符,然后将字符串显示出来,suffix为后缀,如果指定了suffix,basename会将pathname或string中的suffix去掉,功能:返回完整路径最后/的部分,常用于获取文件名
    • basename /home/aaa/test.txt:返回 test.txt
    • basename /home/aaa/test.txt .txt:返回 test
    • dirname /home/aaa/test.txt:返回/home/aaa

自定义函数:

  • function 函数名(){
    	代码
    	[return int;]
    }
    调用时
    函数名 形参1 形参2 ...
    

六. 日志

日志文件保存在 /var/log/目录

1. 日志管理服务 rsyslogd

CentOS7.6的日志服务是 rsyslogdCentOS6.x的日志服务是 syslogd

  • ps aux | grep “rsyslog” | grep -v “grep”:查询linuxrsyslogd服务是否启动
  • systemctl list-unit-files | grep rsyslog:查询rsyslogd服务的自启动状态

配置文件 /etc/rsyslog.conf

编辑文件格式为 *.* 存放日志文件

第一个*代表日志类型,第二个*代表日志级别
Linux基础笔记_第1张图片
在这里插入图片描述

由rsyslogd记录的日志文件,格式包含

  1. 事件产生时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务名或程序名
  4. 事件的具体信息

2. 日志轮替

日志轮替是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存范围之后,就会进行删除

日志轮替文件命名

  1. centos7使用 logrotate进行日志轮替管理,要想改变日志轮替文件的名字,通过 /etc/logrotate.conf 配置 dateext参数
  2. 如果配置文件有 dateext 参数,那么日志会用日期作为日志文件的后缀,这种不会重复,就不用改名,只需要指定保存日志个数,删除多余日志文件
  3. 如果配置文件没有 dateext 参数,日志文件就需要改名,第一次进行日志轮替时,当前的 secure 日志会自动改名为 secure.1,然后新建 secure 日志,用来保存新的日志,第二次进行日志轮替时,secure.1会自动改名 secure.2,当前 secure 日志会自动改名 secure.1,然后新建 secure 日志用改保存新的日志

参数说明

3. 查看内存日志

Linux基础笔记_第2张图片

4. 备份$恢复

Linux备份和恢复有两种方式

  1. 把需要的文件(分区)用 tar 打包,下次恢复时解压
  2. 使用 dump 和 restore

没有指令时安装 yum - y install 指令名

Linux基础笔记_第3张图片

七. Linux面试题

cut不能分割 " "(空格)的,要用 awk


Linux基础笔记_第4张图片

Linux基础笔记_第5张图片
Linux基础笔记_第6张图片
Linux基础笔记_第7张图片
在这里插入图片描述

你可能感兴趣的:(Linux,linux,运维,服务器,后端)