Linux 基础入门---常用命令

“在 Linux 的世界里,一切皆文件”

下面是我在学习 Linux 过程中整理的常用 Linux 命令(新手入门使用),可能不是很全,欢迎小伙伴们在评论区补充。

Linux 基本指令

    • Linux 目录结构
    • 远程登录到 Linux 服务器
    • vi 和 vim 编辑器
    • 开机、重启和用户登录注销
    • 用户管理
    • 用户组
    • 用户和组相关文件(了解)
    • 指定运行级别
    • 帮助指令
    • 文件目录类
    • 时间日期类
    • 搜索查找类
    • 压缩解压类
    • 组管理和权限管理(重要)
      • 文件/目录 所有者
      • 组的创建
      • 文件/目录 所在组
      • 改变用户所在组(root 用户有权限)(重要)
      • 基本权限(重要)
      • rwx 权限详解(难点)
      • 修改权限 chmod
      • 修改文件/目录所有者 chown
      • 修改文件/目录所属组 chgrp
    • 定时任务调度
      • crontab
      • at 定时任务
    • 磁盘分区、挂载
      • 一、Linux 分区
      • 二、挂载的经典案例
      • 三、磁盘情况查询
      • 四、磁盘情况---工作实用命令(常用)
    • 网络配置
      • 查看 IP 和网关
      • ping 命令
      • Linux 网络环境配置
      • 设置主机名和 host 映射
      • 主机名解析过程(Hosts、DNS)
    • 进程管理(常用)
      • 一、基本介绍
      • 二、显示系统执行的进程
      • 三、终止进程 kill 和 killall
      • 四、查看进程树 pstree
      • 五、服务管理 service(常用)
      • 六、动态监控进程
      • 监控网络状态(常用)
    • RPM 与 YUM
      • 一、RPM 包的管理
      • 二、YUM 的管理
    • shell编程(了解)
      • 一、shell 是什么
      • 二、shell 脚本的执行方式
      • 三、shell 变量
      • 四、设置环境变量
      • 五、位置参数变量
      • 六、预定义变量
      • 七、运算符
      • 八、条件判断
      • 九、流程控制
      • 十、read 读取控制台输入
      • 十一、函数
    • APT 软件管理和远程登录
      • 一、apt 软件管理
      • 二、远程登录 Ubuntu(SSH)
    • Centos 8.0 和 Centos 7.0 的比较(了解)
    • 日志管理(重要)
      • 一、基本介绍
      • 二、系统常用日志
      • 日志管理服务
      • 日志轮替
      • 日志轮替机制
      • 查看内存日志 journalctl
    • Linux 系统启动流程
      • 虚拟机克隆
    • Linux 内核
      • 内核源码介绍和内核升级
      • Linux 0.01 内核源码
    • 备份与恢复
    • Webmin
    • BT 宝塔

Linux 目录结构

1、Linux 的目录结构是树状结构
2、具体的目录结构:

目录名称 目录简介
/bin 存放经常使用的命令
/sbin 系统管理程序
/home 普通用户的主目录(常用)
/root 系统管理员
/etc 配置文件(常用)
/usr 用户安装的应用程序
/boot 启动 Linux
/proc /srv /sys 不能动(常用)
/dev 把所有的硬件用文件的形式存储
/media 自动识别设备
/mnt 用户临时挂载别的文件系统(常用)
/opt 安装软件
/usr/local 安装软件的目的目录
/var 经常被修改的目录

远程登录到 Linux 服务器

1、Xshell:Xshell [1] 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。(来源:百度百科)
2、Xftp:Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。(百度百科)
3、ifconfig:ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring
4、ping(网络诊断工具):ping IP地址

vi 和 vim 编辑器

常用的三种模式:
1、正常模式
2、插入模式
3、命令行模式
示意图:
Linux 基础入门---常用命令_第1张图片
:wq 保存修改并退出
:q 退出
:q! 强制退出

快捷键(常用) 作用
yy 拷贝当前行
p 粘贴
dd 删除当前行
/关键字 查找,命令模式下输入,回车查找,n 查找下一个
:set nu 和 :set nonu 设置行号和取消行号
G , g G 最后一行,g 首行
u 撤销

开机、重启和用户登录注销

命令 解释
shutdown -h now 立即关机
shutdown -h 或 shutdown 关机
shutdown -r now 重启
sync 把内存的数据同步到磁盘
su - 用户名 切换用户
logout 注销登录,在运行级别 3 下有效

用户管理

useradd 用户名 添加用户
useradd -d 指定目录 用户名
password 用户名 指定/修改密码
pwd 显示当前用户所在的目录
userdel 用户名 删除用户,但保留其家目录
userdel -r 用户名 删除用户和其家目录
id 用户名 查询用户信息
su - 切换用户名(常用) 切换用户

注:1、从权限高的用户切换到权限低的用户时,不需要输入密码
2、当需要返回到原来用户时,使用 exitlogout
3、查看当前用户/登录用户:who am i

用户组

groupadd 组名 新增组
groupdel 组名 删除组
useradd -g 用户组 用户名(常用) 增加用户时直接加上组
usermod -g 用户组 用户名 修改用户的组

用户和组相关文件(了解)

/etc/passwd 用户的配置文件,记录用户的各种信息
/etc/shadow 口令的配置文件
/etc/group 组的配置文件,记录 Linux 包含的组的信息

指定运行级别

0 关机
1 单用户(可找回丢失密码)
2 多用户状态没有网络服务(不要用
3 多用户状态有网络服务(重要
4 系统未使用留给用户
5 图形界面(重要
6 系统重启

常用运行级别是 3 和 5,也可以指定默认运行级别
(常用)命令:init[runlevel]
查看当前默认级别:systemctl get-default
设置一个默认级别:systemctl set-fault x.target

帮助指令

man 获取帮助信息
ls -a 列出所有文件,包括隐藏文件
ls -l 单列输出,列出详细信息
help 获得 shell 内置命令的帮助信息

文件目录类

pwd 显示当前工作目录的绝对路径
ls [选项] [目录/文件] 列出目录/文件
cd 切换到指定目录,cd ~ 或 cd (回到自己的家目录),cd … 回到当前目录的上一级目录
mkdir 选项 要创建的目录 创建目录,选项 -p (创建多级目录)
rmdir 删除空目录,-rf (强制删除非空目录)
touch 文件名称 创建空文件
cp 选项 source dest(常用) 拷贝文件到指定目录,-r 递归复制真个文件
rm 选项 要删除的文件或目录 (常用) -r 递归删除整个文件夹,-f 强制删除不提示
mv 移动文件与目录,或重命名
cat 文件名称 (常用) 查看文件内容,只能浏览,不能修改。-n 显示行号
more 要查看的文件(常用) 查看文件内容
less(了解) 分屏查看文件内容
echo 输出内容到控制台
head (常用) 用于显示文件开头部分内容,head -n 行数 文件
tail (常用) 输出文件中尾部的内容,tail -f 文件 :实时追踪该文件的所有更新
> 、>> (常用) > 是输出重定向(覆盖),>> 是追加
(常用)ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接,软链接也称符号链接,类似 Windows 的快捷方式
history 查看已经执行过的历史命令,也可以执行历史指令

时间日期类

date 显示当前日期
date +%Y 显示年份
date +%m 显示哪个月
date +%d 显示几号
date +"%Y-%m-%d %H:%M:%S"(重要) 显示年月日时分秒
cal 查看日历
(常用)date -s “字符串时间” 设置日期

搜索查找类

1、find
作用:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或目录显示在终端
语法:find [搜索范围] [选项]
选项:-name, -user, -size
2、locate
作用:快速定位文件路径,locate 数据库无需遍历整个文件系统,查询速度较快
语法:locate 文件
updatedb:更新数据库
3、which
作用:可以查看某个指令在哪个目录下
例:which ls #/usr/bin/ls
4、grep 和管道符号 |(重要)
作用:过滤查找,将前一个命令的处理结果输出传递给后面
语法:grep [选项] 查找内容 源文件
选项:-n 显示匹配行及行号
-i 忽略字母大小写

压缩解压类

1、gzip / gunzip
语法:gzip file #只能将文件压缩为后缀名为 gz 的文件
gunzip file.gz #解压缀名为 gz 的文件
2、zip / unzip
语法:zip 选项 *.zip
unzip 选项 *.zip
选项:-r 递归压缩,即压缩目录
-d 指定解压后文件的存放目录
3、tar(重要)
语法:tar 选项 *.tar.gz #打包
选项:-c 产生 .tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包 .tar 文件
-C 指定解压目录
常用:-zvcf(打包),-xvf(解包)

组管理和权限管理(重要)

在 Linux 中每个用户必须属于一个组,不能独立于组外。每个文件有所有者,所属组,其他人的概念

文件/目录 所有者

一般为文件/目录的创建者
查看文件的所有者:ls -ahl
修改文件的所有者:chown 用户名 文件名

组的创建

命令:groupadd 组名

文件/目录 所在组

查看:ls -ahl
修改:chgrp 组名 文件名

改变用户所在组(root 用户有权限)(重要)

1、usermod -g 新组名 用户名
2、usermod -d 目录名 用户名

基本权限(重要)

例:-rwxrw-r–
第 0 位确定文件类型(d 表示目录,- 表示普通文件,l 表示软链接,c 表示字符设备 /dev,b 表示块设备、硬盘)
第 1-3 位是用户权限,即文件拥有者的权限
4-6 位是所属组的权限,即与文件拥有者同一组的用户的权限
7-9 位是其他人的权限,即不与文件拥有者同组的其他用户的权限
r:读权限 — 4
w:写权限 — 2
x:执行权限 — 1

rwx 权限详解(难点)

1、rwx 作用于文件:
r:可以读取,查看
w:可以修改,删除一个文件(前提是对该文件所在的目录有写权限)
x:可执行
2、rwx 作用于目录:
r:可以读取,ls 查看目录内容
w:可以修改,在目录中创建、删除、重命名目录
x:可以进入该目录,cd

修改权限 chmod

u:所有者 g:所属组 o:其他人 a:所有人
语法:
第一种方式:通过 +、-、=
第二种方式:通过数字赋值

chmod u=rwx, g=rx, o=x 文件/目录名 或 chmod 751 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名

修改文件/目录所有者 chown

语法:

chown newowner 文件/目录
chown newowner:newgroup 文件/目录
选项:-R	如果是目录,则使其下所有子文件/目录递归生效

修改文件/目录所属组 chgrp

语法:chgrp newgroup 文件/目录

定时任务调度

crontab

1、任务调度是指系统在某个时间执行特定的命令或程序。分为系统工作和个别用户工作
2、语法:crontab 选项 //进行定时任务的设置
-e :编辑定时任务;
-l:查看;
-r:删除所有
文件:/etc/crontab
3、例:*/1 * * * * ls -l /etc/ > 文件名 //每小时的每分钟执行该命令
5 个占位符:第一个 * :一小时当中的第几分钟,范围 0 ~ 59
第二个 * :一天当中的第几个小时,范围 0 ~ 23
第三个 * :一个月当中的第几天,范围 1 ~ 31
第四个 * :一年当中的第几月,范围 1~ 12
第五个 * :一周当中的星期几,范围 0 ~ 7
4、特殊符号的说明
* :任何时间
, :不连续的实际
- :连续的时间范围
*/n :每隔多久执行一次

at 定时任务

1、一次性定时任务,以后台模式运行,检查作业队列来执行。默认 atd 守护进程每 60 s 检查作业队列
查看:ps -ef | grep atd //可以检测 atd 是否在运行
2、语法:at 选项 时间

选项 作用
-m 当指定的任务被完成后,将给用户发送邮件
-I atq 的别名,查看系统中有无执行的 task
-d atrm 的别名
-v 显示任务被执行的时间
-c 打印人物的内容到标准输出
-V 现实版本信息
-q<队列> 从指定的文件读入任务
-f<文件>
-t<时间参数>

3、at 的时间定义

hh:mm 小时:分钟
midnight、noon、teatime 深夜、中午、下午 4 点
month day 或 mm/dd/yy 或 dd.mm.yy 具体日期
9am, 12pm 12 小时计时制
now+count time-units 相对计时
today, tomorrow 今天,明天

磁盘分区、挂载

一、Linux 分区

  • 原理介绍
    1、Linux 只有一个根目录,一个独立且唯一的文件结构。Linux 中每个分区都是用来组成整个文件系统的一部分
    2、载入,一个分区和一个目录联系起来
  • 磁盘说明
    1、分为 IDE 硬盘和 SCSI 硬盘
    2、对于 IDE 硬盘,驱动器标识符为 hdx~ ,其中 hd 表明分区所在的设备类型,x 为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),~ 代表分区,前 4 个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。
    3、对于 SCSI 硬盘,标识符为 sdx~ ,同理,sd 表示分区所在设备的类型
    例:sda1 : /boot, 系统启动分区
    sda2 : [swap], 交换分区
    sda3 : / ,根分区
    4、FSTYPE:文件类型
    UUID:每个分区 40 位唯一标识
    MOUNTPOINT:挂载点

二、挂载的经典案例

  • 如何增加一块硬盘?
    1、打开虚拟机添加硬盘
    具体步骤:打开虚拟机的设置,添加硬盘,下一步,完成。然后重启系统
    2、分区,fdisk /dev/sdb(打开 /dev/sdb 文件)
    开始对 /sdb 分区:m 是显示命令列表,p 是显示磁盘分区,n 是新增分区,d 是删除分区,w 是写入并退出
    3、格式化,mkfs -t ext4 /dev/sdb1
    4、挂载,mount 设备名称 挂载目录
    注:用命令行挂载,重启系统后会失效
    5、取消挂载:umount 设备名称 挂载目录
    6、设置自动挂载
    方法:通过修改 /etc/fstab 实现永久挂载
    添加完成后执行 mount -a 生效

三、磁盘情况查询

  • 查询系统整体磁盘使用情况:df -h
  • 查询指定目录的磁盘占用情况:du -h
    选项:
    加 -s :指定目录占用大小汇总
    -h:带计量单位
    -a:含文件
    –max -depth = 1:子目录深度
    -c:列出明细的同时,增加汇总值

四、磁盘情况—工作实用命令(常用)

  • 统计 /opt 文件夹下文件的个数
ls -l /opt | grep "^_" | wc -l
  • 统计 /opt 文件夹下目录的个数
ls -l /opt | grep "^d" | wc -l
  • 统计 /opt 文件夹下文件的个数,包括子文件里的
ls -lR /opt | grep "^_" | wc -l
  • 统计 /opt 文件夹下目录的个数,包括子目录里的
ls -lR /opt | grep "^d" | wc -l
  • 以树状显示目录结构
    tree 目录,如果没有 tree 命令,则使用 yum install tree 来安装

网络配置

查看 IP 和网关

1、查看虚拟网络编辑器和修改 IP 地址
2、查看网关
3、查看 Windows 系统的 VMnet8 网络配置:ipconfig
4、查看 Linux 系统的网络配置:ifconfig

ping 命令

测试主机之间的网络连通性
ping 目的主机ip //测试当前服务器是否可以连接到目的主机

Linux 网络环境配置

1、自动获取
Linux 启动后会自动获取 ip ,优点是避免 ip 冲突,缺点是每次自动获取的 ip 地址可能不一样
2、指定 ip
直接修改配置文件来指定 ip ,并可以连接到外网
命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

	# ip的配置方法 # DHCP 自动分配
	BOOTPROTO = 'static'
	# IP 地址
	IPADDR = 
	# 网关
	GATEWAY = 
	# 域名解析器
	DNS1 = 

重启网络服务或重启系统生效:service network restart 或 reboot

设置主机名和 host 映射

1、hostname 查看主机名
修改文件在 /etc/hostname,修改后,重启生效
2、设置 host 映射
如何通过主机名能够找到(ping)某个系统?
Windows 下在 C:\Windows\System32\drivers\etc\hosts 文件指定
Linux 下 /etc/hosts 文件指定

主机名解析过程(Hosts、DNS)

1、Hosts 是一个文本文件,用来记录 IP 和 Hostname(主机名)之间的映射关系
2、DNS,就是 Domain Name System 的缩写,简称域名系统,是互联网上作为域名和 IP 地址相互映射的一个分布式数据库
3、ipconfig /displaydns //DNS 域名解析缓存
ipconfig /flushdns //手动清理 DNS 缓存
4、顺序:本地浏览器缓存,DNS 缓存,hosts 系统缓存,DNS 分布式数据库缓存

进程管理(常用)

一、基本介绍

1、在 Linux 中,每一个执行的程序都称为一个进程,每一个进程都分配一个 ID 号(pid:进程号)
2、示意图
Linux 基础入门---常用命令_第2张图片
3、每一个进程都有可能以两种方式存在,前台和后台

二、显示系统执行的进程

  • ps 命令
    1、ps显示的信息选项:
字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消耗的 CPU 时间
CMD 正在执行的进程名

命令:ps -aux //显示所有进程

ps -aux | more

2、ps 详解
命令:ps -aux | grep sshd //筛选显示进程

%CPU 进程占用 CPU 的百分比
%MEM 占用物理内存的百分比
VSZ 占用虚拟内存的大小(KB)
RSS 占用物理内存的大小(KB)
ps -ef	//以全格式显示当前所有的进程
ps -ef | grep xxx
ps -ef | more

三、终止进程 kill 和 killall

  • kill 选项 进程号
  • killall 进程的名称
    -q:强迫进程立即停止

四、查看进程树 pstree

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

五、服务管理 service(常用)

服务(service)本质就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求,比如 mysqld,sshd,又称为守护进程

  • service 管理指令
service 服务名 [ start | stop | restart | reload | status ]

在 Centos 7.0 后,很多服务已经不再使用 service ,而是使用 systemctl
service 指令管理的服务在 /etc/inti.d 文件查看

  • 查看服务名

方式1:setup
方式2:ls -l /etc/init.d

  • 服务的运行级别 runlevel

1、Linux 系统有 7 中运行级别(runlevel),0 ~ 6,常用 3 和 5
2、开机的流程:
开机,BIOS, /boot,systemd 进程1,运行级别,对应的服务
3、设置运行级别:在 /etc/initab

  • chkconfig 指令

1、介绍
通过 chkconfig 指令可以给服务的各个运行级别设置 自启动/关闭
/etc/init.d 文件查看
2、基本语法

chkconfig --list | grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off		//重启 reboot 生效
  • systemctl 管理指令(重要)
systemctl [ start | stop | restart | status ] 服务名

管理的服务在 /usr/lib/systemd/system 查看
设置服务的自启动状态:

1、systemctl list-unit-files [ | grep 服务名 ]
2、systemctl enable 服务名
3、systemctl disable 服务名
4、systemctl is-enabled 服务名

例:查看当前防火墙的状况,关闭和重启防火墙

systemctl status firewalld	//查看当前防火墙的状态
systemctl stop firewalld		//关闭防火墙
systemctl restart firewalld		//重启防火墙
netstat -anp | more		//查看网络状态
  • firewall 指令
firewall -cmd --permanent --add-port = 端口号/协议	//打开端口
firewall -cmd --permanent --remove-port = 端口号/协议	//关闭端口
firewall -cmd --reload	//重新载入才能生效
firewall -cmd --query-port = 端口号/协议	//查询端口是否开发

六、动态监控进程

  • top 指令
选项 说明
-d 指定每隔几秒更新。默认是 3 秒
-i 使 top 不显示任何闲置或僵尸进程
-p 通过指定监控进程 ID 来仅仅监控某个进程的状态
交互操作 说明
P 以 CPU 使用率排序
M 以内寸的使用率排序
N 以 PID 排序
q 退出 top
监视特定用户:top u 用户名
终止指定的进程:top k pid
指定系统状态更新的时间:top -d 秒数

监控网络状态(常用)

1、查看系统网络情况:netstat
netstat 选项
-an:按一定顺序排列输出
-p:显示哪个进程在调用
2、检测主机连接:ping
它是一种网络检测工具,用于检测主机连接是否正常,或检测两台主机间的网线/网卡故障
命令:ping 目的ip

RPM 与 YUM

一、RPM 包的管理

1、介绍
RPM 是用于互联网下载包的打包及安装工具,生成具有 .RPM 扩展名的文件。RPM 是 RedHat Package Manager(红帽软件包管理工具)
2、查询已安装的 rpm 列表

 rpm -qa | grep xxx

3、rpm 包名的基本格式
名称-版本号-使用操作系统
如果是 i686、i386 表示 32 位系统,noarch 表示通用
4、rpm 包的其他查询指定

指令 说明
rpm -qa 查询所安装的所有 rpm 软件包
rpm -q 软件包名 查询软件包是否安装
rpm -qi 软件包名 查询软件包信息
rpm -ql 软件包名 查询软件包中的文件
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -e 包名称 卸载 rpm 包,加上 --nodeps 表示强制删除
rpm -ivh 包全路径名称 安装 rpm 包

二、YUM 的管理

1、介绍
yum 是一个 shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依懒性关系,并且一次安装所有依赖的软件包
2、查询 yum 服务器是否有需要安装的软件

yum list | grep 软件列表

3、安装指定的 yum 包(重要)

yum install xxx

shell编程(了解)

一、shell 是什么

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

二、shell 脚本的执行方式

1、脚本格式要求(重要)
#!/bin/bash 开头,生成的脚本文件有可执行权限
2、脚本的常用执行方式
方式一:输入脚本的绝对路径或相对路径
方式二: sh + 脚本文件

三、shell 变量

1、介绍
shell 变量分为系统变量和用户自定义变量
2、基本语法
定义变量:变量名=值,=等号两边不能有空格
撤销变量:unset 变量
声明静态变量:readonly 变量,不能撤销
输出变量需要加上 $
3、定义变量的规则
等号两边不能有空格,变量名一般习惯大写
将命令的返回值赋给变量:

四、设置环境变量

  • 基本语法
    1、export 变量名=变量值
    2、source 配置文件
    3、echo $变量名
  • shell 脚本的多行注释
    :<

五、位置参数变量

1、介绍
当我们执行一个脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
2、基本语法

$n $0 代表命令本身,$1 - $9 代表第一到第九个参数
$* (常用) 把所有的参数看成一个整体
$@(常用) 把每个参数区分对待
$# 命令行中所有参数的个数

六、预定义变量

1、介绍
指事先已经定义好的变量,可以直接在 shell 脚本中使用
2、基本语法

$$ 当前进程的进程号
$! 后台运行的最后一个进程的进程号
$? 最后一次执行的命令的返回状态。0 表示正确执行

七、运算符

1、$ (( 运算式 )) 或 $[ 运算式 ] 或 expr m + n
2、expression 表达式,expr 运算符之间要有空格
将 expr 的结果赋给某个变量,使用反引号``
3、expr m - n
4、expr *, / , % #乘,除,取余

八、条件判断

(重要)[ condition ]
//condition 前后要有空格,非空返回 ture ,可使用 $? 验证(0 为 ture ,≥ 1 为 false)
1、字符串比较 (=)
2、两个整数的比较

-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

3、按照文件权限进行判断
-r:读
-w:写
-x:执行
4、按照文件类型进行判断

九、流程控制

1、if 判断

if [ condition ]
then
	 code1
elif [ condition ]
then 
	code2
fi

注:[ condition ],中括号和条件判断是式之间必须有空格
2、case 语句

case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
...省略其他分支...
"值i")
如果变量的值不等于以上的值,则执行此程序
;;
esac

3、for 循环

for 变量 in 值1 值2 值3...
do
程序或代码
done
for (( 初始值:循环控制条件:变量变化 ))
do
程序
done

4、while 循环

while [ 条件判断式 ]
do
程序
done

注:while 和 [] 之间有空格,条件判断式和 [] 也有空格

十、read 读取控制台输入

read 选项 参数
选项:-p	指定读取值时的提示符
	-t	指定读取值时的等待时间(s)
变量:变量 指定变量名

十一、函数

系统函数和自定义函数

1、basename
功能:返回完整路径最后 / 的部分,常用于获取文件名

basename [pathname] [suffix]

basename 命令会删除所有的前缀包括最后一个(“/”)字符,然后将字符串显示出来
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 中的suffix 去掉
2、dirname
功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分

direname 文件绝对路径

从给定的包含绝对路径的文件名中去除非目录的部分,然后返回剩下的路径(目录的部分)
3、自定义函数

function funname()
{
	Action;
	[return int;]
}

调用直接写函数名:funname [值]
例:计算输入两个参数的和(动态输入),getSum

APT 软件管理和远程登录

一、apt 软件管理

1、apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具
2、Ubuntu 软件管理操作的相关命令

sudo apt-get update	//更新源
sudo apt-get install package	//安装包
sudo apt-get remove package	//删除包
sudo apt-cache search package	//搜索软件包
sudo apt-cache show package	//获取报的相关信息
sudo apt-get install package --reinstall	//重新安装包
sudo apt-get -f install	//修复安装
sudo apt-get remove package --purge	//删除包,包括配置文件
sudo apt-get build-dep package	//安装相关的编译环境
sudo apt-get upgrade	//更新已安装的包
sudo apt-get dist-upgrade	//升级系统
sudo apt-cache depends package	//了解使用该包依赖哪些包
sudo apt-cache rdepends packeage	//该包被哪些包依赖
sudo apt-get source package	//下载该包的源代码

二、远程登录 Ubuntu(SSH)

1、SSH 介绍
SSH 是 Secure Shell 的缩写,建立在应用层和传输层基础上的安全协议。
SSH 是目前较可靠的,专为远程登录会话和其他网络服务提供安全性的协议,常用于远程登录

2、和 Centos 不一样,Ubuntu 默认没有安装 SSHD 服务
使用 netstat 指令查看

apt install net-tools	//安装netstat

安装 SSH 和启用:

sudo apt-get install openssh-server	//安装 SSH 服务端和客户端
service sshd start	//启动 SSHD ,监听 22 端口

从一台 Linux 系统远程登录另外一台 Linux 系统:
在创建服务器集群时,会使用该技术
基本语法:ssh 用户名@IP
使用 ssh 访问,如访问出错,可查看是否有该文件:/.ssh/known_ssh
登出;exit 或 logout

Centos 8.0 和 Centos 7.0 的比较(了解)

功能 Centos 8.0 Centos 7.0
内核版本 4.18.0.x 3.10.1.x
文件大小 8EB 500TB
文件系统大小 1PB 500TB
最大内存 24TB 12TB
防火墙 nftables 取代 iptables firewalld 底层使用 iptables
支持架构 支持 64 - bit ARM 不支持 64 - bit ARM

日志管理(重要)

一、基本介绍

1、日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,日志对于安全来说也很重要
2、日志是用来记录重大事件的工具

二、系统常用日志

/var/log/ 系统日志文件的保存位置
/var/log/boot.log 系统启动日志
/var/log/cron 系统定时任务相关日志
/var/log/lastlog 系统中所有用户最后一次登录时间的日志
/var/log/maillog 记录邮件信息的日志
/var/log/message 记录系统重要消息的日志
/var/log/secure 记录验证和授权方面的日志
/var/tun/ulmp 记录当前已经登录的用户的日志

日志管理服务

1、Centos 7.6 日志服务是 rsyslogd,Centos 6.x 是 syslogd
2、原理图:
Linux 基础入门---常用命令_第3张图片
3、查询 rsyslogd 服务是否启动

ps -aux | grep "rsyslog" | grep -v "grep"

4、查询 rsyslogd 服务的自启动状态

systemctl list-unit-files | grep rsyslog

5、配置文件

/etc/rsyslog.conf

6、日志类型

auth pam 产生的日志
authpriv ssh、ftp 等登录的验证信息
corn 时间任务
kern 内核
lpr 打印
mail 邮件
mark(syslog)-rsyslog 服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix to unix copy 主机之间的通信
local 1-7 自定义的日志设备

7、日志级别

debug 调试信息
info 一般信息
notice 最具有重要性的普通文件的信息
warning 警告级别
error 错误级别
crit 严重级别
alert 需要立刻修改的信息
emerg 内核崩溃等重要信息
none 什么都不记录

注:从上到下,级别从低到高,记录的信息越来越少
日志级别的格式包含以下 4 列:
时间、主机名、服务名、具体信息

日志轮替

一、基本介绍
把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围后,就会进行删除
二、logrotate 配置文件
/etc/logrotate.conf 为 logrotate 的全局配置文件
也可以把某个日志文件的轮替规则写到 /etc/logrotate.d/ 中
参数说明:

daily 每天
weekly 每周
monthly 每月
rotate 数字 保留的日志文件的个数
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限、所有者和所属组
mail address
missingok
notifempty
minsize 大小 日志轮替的最小值
size 大小
dateext 使用日期作为日志轮替文件的后缀
sharedscripts 在此关键字之后的脚本只执行一次
prerotate / endscript
postrotate /endscript

日志轮替机制

1、依赖系统定时任务
/etc/cron.daily/
logrotate 文件(可执行)

查看内存日志 journalctl

journalctl 查看全部
-n 3 查看最新 3 条
–since time1 --until time2 查看从 time1 到 time2 的日志
-p err 查看报错日志
-o verbose 日志详细内容

例:

journal_PID=1245 _COMM=sshd
或 journalctl | grep sshd

注:journalctl 查看的是内存日志,重启清空

Linux 系统启动流程

1、首先 Linux 要通过自检,检查硬件设备有无故障
2、如果有多块启动硬盘,需要在 BIOS 中选择启动硬盘
3、启动 MBR (主引导区记录)中的 bootloader 引导程序
4、加载内核文件
5、执行所有进程的父进程 systemctl
6、进入欢迎界面,加载内核文件时的关键文件:
kernel 文件和 initrd 文件

虚拟机克隆

方式一:直接拷贝一份安装好的虚拟机文件
方式二:使用 VMware 的克隆操作,克隆时,要先关闭 Linux 系统

  • 虚拟机快照Linux 基础入门---常用命令_第4张图片
    虚拟机的本质是文件!

Linux 内核

内核源码介绍和内核升级

1、为什么要阅读 Linux 内核?
深入理解 Linux 底层运行机制,操作系统
2、进程有阻塞、就绪、执行几个状态

Linux 0.01 内核源码

1W 行,内核地址:https://www.kernel.org/

  • 阅读内核源码技巧
    1、懂 C 语言
    2、知道 Linux 源码的整体分布情况。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成
    3、纵向:顺着程序的执行顺序逐步进行。横向:按模块进行
    4、反复的过程

  • 源码相关文件

bopt 和系统引导相关
fs 存放文件系统代码
include 核心的头文件 ,*.h
init 存放 main.c
kernel 和系统内核相关的源码
lib 存放库代码
Makefile 编译文件
mm 内存管理
tools 工具
  • 下载、解压
    下载:wget 下载地址
    解压:tar -zxvf *.tar.gz

  • 内核升级(兼容性问题)
    yum info kernel -q //检测内核版本,显示可以升级的内核
    uname -a //查看当前内核版本
    yum list kernel -q //查看已安装的内核
    yum update kernel //升级内核

备份与恢复

一、备份有两种方式
1、TAR打包
2、使用 dump 和 restore 命令
安装 dump 和 restore :

yum -y install dump
yum -y install restore

二、使用 dump 完成备份
1、基本介绍
dump 支持分卷和增量备份,只有分区才支持增量备份
2、基本语法

dump [-cu] [-123456789] [-f<备份后文件名>] [-T<日期>] ~

选项:
-j:调用 bzlib 库压缩备份文件
-u:备份完成后,在 /etc/dumpdares 中记录备份的文件系统、层级、日期和时间等
层级为 0 ,为完整备份
3、通过 dump 命令配合 crontab 可实现自动备份
dump -W //显示需要备份的文件及其最后一次备份的层级、日期、时间
4、cat /etc/dumpdares //查看备份时间文件
文件或目录,不支持增量备份,只能使用 0 级别备份

三、使用 restore 完成恢复
1、基本语法
restore [模式选项] [选项]

模式 说明
-C 对比
-i 交互
-r 还原
-t 查看

4个模式,在一次命令中,只能指定一种
选项:-f <备份文件>

Webmin

一、基本介绍
Webmin 是一个基于 Web 的 Unix/Linux 的系统管理工具
1、下载地址:http://download.webmin.com/download/yum/
2、安装:rpm -ivh ~
3、重置密码
4、修改 Webmin 服务的端口号(默认是 10000),修改 port=

vim /etc/webmin/miniserv.conf

5、重启 Webmin
6、防火墙打开修改后的端口

firewall-cmd --zone=public --add-port=端口号/协议
firewall-cmd --reload	//更新防火墙配置
firewal-cmd --zone=public --list-ports		//查看已经开放的端口号

7、登录 Webmin

BT 宝塔

一、基本介绍
Linux 面板是提升运维效率的服务器管理软件,支持一键 LAMP/LNMP/集群/监控/网站/ FTP /数据库/ Java 等多项服务器管理功能
1、安装和使用
安装:yum install -y wget
下载:wget -O install.sh http://download.bt.cn/install/install_6.0.sh
编译:sh install.sh
注:如果 BT 的用户名,密码忘记了,可使用 bt default 查看

你可能感兴趣的:(操作系统,linux,vim,运维)