Linux学习笔记

Linux学习记录,按照韩顺平老师视频进行学习。

目录结构

Linux 系统目录结构 | 菜鸟教程

基本介绍

  1. linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”
  2. 在Linux世界里,一切皆文件。

树状目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

目录解释

  • /bin [常用] (/usr/bin、 /usr/local/bin)是Binary的缩写,这个目录存放着最经常使用的命令
  • /sbin (/usr/sbin、 /usr/local/sbin)s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /home [常用]存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
  • /root [常用]该目录为系统管理员,也称作超级权限者的用户主目录
  • /lib 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
  • /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
  • /etc[常用]所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库 my.conf
  • /usr [常用]这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
  • /boot [常用] 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /proc [不能动]这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
  • /srv [不能动]service缩写,该目录存放一些服务启动之后需要提取的数据
  • /sys[不能动]这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
  • /tmp 这个目录是用来存放一些临时文件的
  • /dev类似于windows的设备管理器,把所有的硬件用文件的形式存储/media[常用]linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
  • /mnt [常用]系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
  • /opt 这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空。
  • /usr/local [常用]这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
  • /var [常用]这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
  • /selinux [security-enhanced linux]SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置.

Vim基本用法

vim是vi的增强版,语法识别高亮显示等。。。

vim 用vim打开文件,没有则默认打开空文件

vim的三个模式

  • 一般模式
  • 输入模式
  • 命令行模式

进入为一般模式,在一一般模式下按a/A,i/I,o/O按键进入输入模式,按Esc退回一般模式,在正常模式下按:进入命令行模式输入命令按Enter提交。

一般模式指令

  • yy 复制当前行(5yy复制包括当前往下5行)
  • p 粘贴
  • dd 删除当前行(5dd删除包括当前往下5行)
  • gg 光标跳到第一行
  • G 光标跳到最后一行
  • <行号>gg/<行号>G 光标跳到指定行(例如:20gg/20G跳转到行号20)
  • /<关键词> 搜索关键词,n查找下一个(例如/hello

命令行模式指令

  • :h 查看help.txt

  • :w 保存写入

  • :q 退出
  • :q! 强制退出
  • :wq 保存写入并退出
  • :<行号> 跳转到指定行号(如::20 跳转到行号20)
  • :set nu 临时设置行号
  • :set nonu 取消行号

Vim键盘图

用户管理

相关指令(命令)

su - <user> 切换用户

logout / exit 登出

id <user> 查看用户信息

whoami 查看当前会话用户

who am i 查看登录的用户信息 (第一次会话的)

useradd <user> 创建用户

  • -r 指定家目录
  • -g 添加到指定用户组(不添加将创建与该用户同名的组,并指定该组)

passwd <user> 修改用户密码

userdel <user> 删除用户

  • -r 同时删除家目录

usermod [选项] <user> 修改用户属性

  • -g 修改用户组
  • -d 修改用户家目录(需要有一定权限)

groupadd <group> 创建用户组

groupdel <group> 删除用户组

用户和组相关文件

/etc/passwd文件

  • 用户的配置文件,记录用户的各种信息
  • 每行格式: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:Shell登录

/etc/shadow文件

  • 口令的配置文件
  • 每行格式: 用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group文件

  • 组的配置文件,记录Linux包含的组的信息
  • 每行格式: 组名:口令:组标识号:组内用户列表

忘记密码解决办法

基于CentOS 7.9

  1. 重启系统
  2. 在选择界面使用方向上下键选择防止自动选择
  3. e进入编辑界面
  4. 找到以linux16开头的行,在末尾加入init=/bin/sh
  5. Ctrl+X进入单用户模式
  6. 输入:mount -o remount,rw /并回车
  7. 输入:passwd并回车
  8. 输入两遍新密码
  9. 输入:touch /.autorelabel并回车
  10. 输入:exec /sbin/init 并回车
  11. 等待系统重启即可

其它操作修改: Linux系统忘记了root密码怎么办?Dribblelife的博客-CSDN博客忘记root密码

运行级别

基本介绍

运行级别说明:

  • 0:关机
  • 1:单用户【找回丢失密码】
  • 2:多用户状态没有网络服务
  • 3:多用户状态有网络服务
  • 4:系统未使用保留给用户
  • 5:图形界面
  • 6:系统重启

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

演示应用实例命令:init [0123456]

应用案例:通过init 来切换不同的运行级别,比如动 5-3,然后关机。

  • systemctl get-default 查看默认运行级别
  • systemctl set-default <级别> 设置默认运行级别
    • multi-user.target 多用户级别 3
    • graphical.target 图形级别 5

帮助指令

  • man <命令或配置文件> 获得帮助信息(man ls查看ls命令的帮助信息)
  • help [命令] 获取shell内置命令的帮助信息(如help cd
  • <命令> --help 查看某命令的帮助信息(如ls --help

文件目录指令

pwd 显示当前工作目录的绝对路径
ls [选项] [目录/文件] 查看显示目录/文件信息

  • -a 显示当前目录所有的文件和目录,包括隐藏的
  • -l 已列表的方式显示信息(等同于ll)
  • -i
  • -h 转换大小单位

cd <dir> 切换到指定目录

  • cd ~ 切换到家目录
  • cd .. 返回上一级目录

mkdir [选项] <目录> 创建目录

  • -p 创建多级目录

rmdir <目录> 删除空目录
rm [选项] <文件/目录> 删除目录/文件

  • -r 递归删除整个目录
  • -f 强制删除不提示
  • -rf 包含上面两者

touch <file> 创建一个空文件

cp [选项] <source> <dest> 复制文件/目录到指定目录

  • -r 递归复制整个目录
  • \cp 强制覆盖不提示

mv 移动文件与目录或重命名

  • mv <oldName> <newName> 重命名
  • mv <file/dir> <path> 移动文件/目录

cat [选项] 查看文件内容

  • -n 显示行号
  • cat [选项] <file> | more

more 基于VI编辑器的文本过滤器,以全屏幕的方式按页显示

  • Space 翻动下一页
  • Enter 翻动下一行
  • q 退出
  • Ctrl+F 翻动下一屏
  • Ctrl+B 翻动上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号

less 分屏查看文件内容,与more类似但更强大,按需加载

  • Space 翻动下一页
  • PageDown 翻动下一页
  • PageUp 翻动上一页
  • / 向下搜寻。 n:下一个 N:上一个
  • ? 向上搜寻。 n:下一个 N:上一个
  • q 退出

echo [选项] <content> 输出内容到控制台

  • echo $HOSTNAME 输出主机名
  • echo $PATH 输出环境变量

head [选项] <file> 显示文件的头部内容,默认前十行

  • -n <lines> 显示前多少行
  • -c <bytes> 显示前多少字节

tail [选项] <file> 显示文件的尾部内容,默认后十行

  • -n <lines> 显示后多少行
  • -c <bytes> 显示后多少字节
  • -f 实时监控文件变化

‘>’ 输出重定向(覆盖)

‘>>’ 追加

  • ls -l > 文件 列表的内容覆盖到文件
  • ls -al >> 文件 列表的内容追加到文件
  • cat 文件1 > 文件2 将文件1的内容覆盖到文件2
  • echo "内容" >> 文件 追加内容到文件

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

  • ln -s <原文件/目录> <软链接名> 给原文件/目录创建一个软链接(pwd查看仍在原文件/目录)

history [数量] 查看已经执行过的历史命令,无参默认显示全部

  • !<编号> 执行历史命令中编号为<编号>的命令(如!5 执行编号为5的命令)

时间日期指令

date 显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
date -s <字符串时间> 设置系统当前时间

cal [选项] 显示当前日历,无参默认显示当前时间日历

  • cal 2023 显示2023年日历

搜索查找指令

find [范围] [选项] 从指定目录向下递归遍历其各个子目录查找

  • -name <name> 按照指定的文件名查找
  • -user <user> 查找属于指定用户名的所有文件
  • -size <size>按照指定的文件大小查找文件(单位K,M,G)
    • find / -size +200M查找/下大于200M的文件,-200M表示小于200M的文件

locate <file> 可以快速定位文件路径。

  • locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。
  • locate指令无需遍历整个文件系统,查询速度较快。
  • 为了保证查询结果的准确度,管理员必须定期更新locate时刻
  • updatedb 更新数据库

which <cmd> 查询某个指令在哪个目录下

grep [选项] <内容> <源文件> 过滤查找

  • -n 显示匹配行及行号
  • -i 忽略字母大小写

|管道符 ,将前一个命令查询到的内容交给下一个命令

  • cat a.txt | grep "hello" cat查询到的内容交给grep进行过滤查找

压缩和解压

gzip <file> 只能将文件压缩成.gz文件

gunzip <file.gz> 解压.gz文件

zip [选项] <name.zip> <file/dir> 压缩成name.zip文件

  • -r 递归压缩,即压缩目录

unzip [选项] <file.zip> 解压

  • -d <dir> 指定解压后存放目录

tar [选项] 打包、压缩或解压

  • -c 产生.tar打包文件
  • -v 显示详细信息
  • -f 指定压缩后的文件名
  • -z 通过gzip指令处理压缩解压
  • -j 通过bzip2指令处理压缩解压
  • -x 解包.tar文件
  • -C 指定解压目录
  • 常见用法
    • tar -czvf <xxx.tar.gz> <file>... 压缩成.tar.gz
    • tar -xzvf <xxx.tar.gz> 解压
    • tar -tzvf <xxx.tar.gz> 列出压缩文件内容

Linux tar 命令 | 菜鸟教程

Linux组(权限)

基本内容

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文档/文件有所有者、所属组、其它组的概念。

ls -ahl显示格式解释如下:

文档/文件属性 链接数 所有者 所属组 大小 修改时间
drwx———. 16 wshape1 wshape1 4.0K 1月 25 14:17
-rw-r—r—. 1 root root 15K 1月 25 17:03

文档属性:

  • 第一位:表示文档类型
    • d 目录
    • -文件
    • l 链接文档
    • b 装置文件里面的可供储存的接口设备(可随机存取装置)(块文件)
    • c 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)(字符设备)
  • 第2到4位:所有者权限
  • 第3到5位:所属组权限
  • 第6到8位:其他组权限

rwx作用到文件

  1. [r]代表可读(read):可以读取,查看字
  2. [w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
  3. [x]代表可执行(execute):可以被执行

rwx作用到目录

  1. [r]代表可读(read):可以读取,Is查看目录内容 (但是不能进入目录)
  2. [w]代表可写(write): 可以修改,对目录内创建+删除+重命名目录
  3. [x]代表可执行(execute):可以进入该目录 (但是不能查看目录内容)

常用指令

chown [选项] <user> <file/dir> 修改文件/目录所有者

  • chown [选项] <newOwner>:<newGroup> <file/dir> 同时修改所有者与所属组

chgrp [选项] <group> <file/dir> 修改文件/目录所在组

chmod [选项] <权限> <file/dir> 修改文件/目录权限

  • rwx方式变更权限u:所有者,g:所属组,o:其它组,a:所有人(u g o的总和)
    • 例:chmod u=rwx, g=rx, o=x <文件/目录> 给u g o分别赋予rwx rx x权限
    • 例:chmod o+w <文件/目录> 给o增加w权限
    • 例:chmod a-x <文件/目录> 给a移除x权限
  • 数字方式变更权限r=4 w=2 x=1,rwx=4+2+1=7
    • 例:chmod 751<文件/目录> 等同于u=rwx, g=rx, o=x

以上三个指令共有选项:

  • -R 递归修改目录内内容权限

修改权限后用户仍无法控制则可能需要重新登陆

定时任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

  1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
  2. 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份

crond任务调度

Linux crontab 命令 | 菜鸟教程

crontab [选项]

  • -e 编辑定时任务
  • -l 查询定时任务
  • -r 删除当前用户所有的定时任务

service crond restart 重启crond

调度文件:

  • 文件内容格式:f1 f2 f3 f4 f5 program f1—5为时间格式program为执行程序

  • 时间占位符(时间格式)

    1
    2
    3
    4
    5
    6
    7
    8
    *    *    *    *    *
    - - - - -
    | | | | |
    | | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
    | | | +---------- 月份 (1 - 12)
    | | +--------------- 一个月中的第几天 (1 - 31)
    | +-------------------- 小时 (0 - 23)
    +------------------------- 分钟 (0 - 59)
  • 时间格式特殊符号

特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如”05 1-6命令” ,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“/10 * 命令”,代表每隔10分钟就执行一遍命令

at定时任务

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。
  4. 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令(ps -ef | grep atd)来查看。

at [选项] [时间] 设置定时任务 (Ctrl+D结束命令输入)

  • -m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
  • -I 显示待执行任务的列表 (同atq命令)
  • -d 删除指定的待执行任务(同atrm命令)
  • -v 显示任务将被执行的时间
  • -c 打印任务的内容到标准输出
  • -V 显示版本信息
  • -q <队列> 使用指定的队列
  • -f <文件> 从指定文件读入任务而不是从标准输入读入
  • -t <时间参数> 以时间参数的形式提交要运行的任务

时间表达式:

  • YYMMDDhhmm[.ss](缩写年、月、日、小时、分钟[秒])
  • CCYYMMDDhhmm[.ss](完整年、月、日、小时、分钟和[秒])
  • now
  • midnight
  • noon
  • teatime (4:00PM)
  • tomorrow
  • AM
  • PM
  • 可以添加一个+使它们相对于某个时间,下面是可用单位:
    • minutes
    • hours
    • days
    • weeks
    • months
    • years
1
2
3
$ echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
$ echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2022
$ echo "echo hello" | at now + 3 days

Linux at命令详解 - 许良Linux

磁盘管理

磁盘分区

原理介绍:

  1. Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  2. Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明:

  1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
  2. 对于IDE硬盘,驱动器标识符为”hdx~”,其中”hd”表明分区所在设备的类型,这里是指IDE硬盘了。”x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),”~”代表分区前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
  3. 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

查看所有设备挂载情况

  • lsblk

  • lsblk -f

分区命令:

  • fdisk /dev/sdx
  • 开始对/sdx分区
    • m 显示命令列表
    • p 显示磁盘分区
    • n 新增分区
    • d 删除分区
    • w 写入并退出

格式化磁盘:

mkfs -t <分区类型> /dev/sdx~

  • 分区类型:ext2、ext3、ext4、reiserfs、nfs、vfat

挂载分区:

mount <设备> <目录>

  • mount /dev/sdx~ <dir>

  • 重启系统后失效

  • 永久挂载分区:

卸载分区:

umount <设备>

umount <被挂载目录>

磁盘使用情况

df -Th 查看整体磁盘使用情况

du [选项] [dir] 查看指定目录的磁盘使用情况,默认为当前目录

实用指令

  1. 统计/opt文件夹下文件的个数
    ls -l /opt | grep "^-" | wc -l
  2. 统计/opt文件夹下目录的个数
    ls -l /opt | grep "^d" | wc -l
  3. 统计/opt文件夹下文件的个数,包括子文件夹里的
    ls -lR /opt | grep "^-" | wc -l
  4. 统计/opt文件夹下目录的个数,包括子文件夹里的
    ls -lR /opt | grep "^d" | wc -l
  5. 以树状显示目录结构tree目录,可能需要执行yum install tree安装

Linux wc命令 | 菜鸟教程 (runoob.com)

网络配置

NAT(Network Address Translation)网络配置

ifconfig 查看网络配置

ping <ip> 测试当前主机是否可以于目标ip进行通讯

IP配置

  • 自动获取:

    • 登陆后,通过界面的来设置自动获取ip
    • 特点:linux启动后会自动获取IP
    • 缺点是每次自动获取的ip地址可能不一样。
  • 手动配置:

    • 图形化:网络设置里配置

    • 直接修改配置文件来指定IP并可以连接到外网(程序员推荐)

      • 编辑/etc/sysconfig/network-scripts/ifcfg-ens33(如修改为192.168.245.2)
        • 修改IPV4配置方式BOOTPROTO="static"
        • 修改IP地址IPADDR=192.168.245.128
        • 修改网关GATEWAY=192.168.245.2
        • 修改DNSDNS=192.168.245.2
        • 虚拟机的记得要配置虚拟机网络相关配置
        • service network restart或重启系统

主机名与hosts映射

查看主机名:

  • hostname

修改主机名:

  • 修改文件/etc/hostname
  • 重启系统

修改hosts映射:

  • 编辑配置文件/etc/hosts
  • 行格式:ip 域名(主机名)

进程管理

在Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。

每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

ps [选项] 显示目前系统正在运行的程序

  • -a 显示当前终端的所有进程信息
  • -u 以用户的格式显示进程信息
  • -x 显示后台进程运行的参数
  • -w 不限制输出宽度
  • -e 显示所有进程
  • -f 全格式输出,包括命令
  • 寻找指定进程:ps -ef | grep <关键词>
  • ps -aux输出格式:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    • USER: 进程执行用户
    • PID: 进程号
    • %CPU: 占用的 CPU 使用率
    • %MEM: 占用的物理内存使用率
    • VSZ: 占用的虚拟内存大小 (KB)
    • RSS: 占用的物理内存大小 (KB)
    • TTY: 终端的次要装置号码 (minor device number of tty)
    • STAT: 该行程的状态:
      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中 running
      • S: 静止状态 sleep
      • T: 暂停执行
      • Z: 不存在但暂时无法消除(僵尸进程)
      • W: 没有足够的内存分页可分配
      • <: 高优先序的进程
      • N: 低优先序的进程
      • L: 有内存分页分配并锁在内存内 (实时系统或捱A I/O)
    • START: 进程开始时间
    • TIME: 执行的时间
    • COMMAND:所执行的指令(过长会被截断)

父子进程

  • ps -ef 查看
  • PPID表示父进程pid

终止进程

  • kill [选项] <pid> 终止进程
    • -9 强制终止进程
  • killall <程序名> 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用

查看进程树

  • pstree [选项] 查看进程树
    • -p 显示进程的PID
    • -u 显示进程的所属用户

动态进程管理

top [选项] 实时更新显示进程

  • -d <秒> 指定更新间隔
  • -i 不显示任何闲置或者僵尸进程
  • -p <pid> 监控指定pid的进程
  • -n 更新几次后退出

显示头:

1
2
3
4
5
6
7
top - 11:13:24 up 37 min,  1 user,  load average: 0.00, 0.01, 0.03
Tasks: 224 total, 1 running, 223 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2027680 total, 1168104 free, 478228 used, 381348 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1389524 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

交互操作:

  • P以%CPU排序,默认就是此项
  • M以%MEM排序
  • N以PID排序
  • u 查看指定用户的进程
  • k 删除指定PID的进程
  • q 退出

服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

service管理指令

  • service <服务名> <start | stop | restart | reload | status>

service指令管理的服务在/etc/init.d/查看(ll /etc/init.d/

查看系统服务

  • setup

开机流程:

跳转查看运行级别解释

chkconfig指令

管理服务在各个运行级别的自启动

chkconfig 指令管理的服务在/etc/init.d/ 查看

基本用法:

  • chkconfig --list 查看服务
  • chkconfig <服务名> --list 查看某个服务
  • chkconfig --level <运行级别> <服务名> <on | off> 设置

重启系统生效

systemctl管理指令

systemctl指令管理的服务在/usr/lib/systemd/system/查看(ll /usr/lib/systemd/system/)

systemctl简化了运行级别,只有3和5

基本用法:

  • systemctl <start | stop | restart | status> <服务名> 开启/关闭/重启/查询 服务
  • systemctl list-unit-files 查看服务开机启动状态(是否开机自启)
  • systemctl <enable | disable> <服务名> 开启/关闭服务开机自启动
  • systemctl is-enabled <服务名>查询某个服务是否是自启动的

防火墙端口指令

firewall-cmd --permanent --add-port=端口号/协议 打开端口

firewall-cmd --permanent --remove-port=端口号/协议 关闭端口

firewall-cmd --reload 重新载入,才能生效

firewall-cmd --query-port=端口/协议 查询端口是否开放

系统网络情况netstat

netstat [选项]

  • -an 按一定顺序输出排列
  • -p 显示哪个进程在调用

rpm和yum包管理

RPM

rpm [选项] rpm包管理指令

  • -qa 查询所有已安装的rpm软件包
  • -q <name> 查询指定的软件包是否安装
  • -qi <name> 查询指定软件包的信息
  • -ql <name> 查询指定软件包的文件
  • -qf <文件全路径名> 查询文件所属的软件包
  • -e <name> 删除指定软件包(--nodeps 强制删除)
  • -ivh <file> 安装软件包(-i安装,-v提示,-h进度条)

YUM

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

yum [选项] yum包管理指令

  • list 查看服务器支持的包列表(可以使用grep过滤)
  • install <name> 下载安装指定软件包
  • check-update 检查是否有可用的软件包更新
  • update [name] 更新系统中的一个或多个软件包

linux yum 命令 | 菜鸟教程 (runoob.com)

搭建JavaEE环境

安装JDK

Java Downloads | Oracle 中国

  1. yum安装
    • yum list java* 查看服务器jdk版本列表
    • yum install java-x.x.x-openjdk 安装指定版本
  2. rpm安装
    • 下载指定版本JDK的rpm安装包
    • rpm -ivh <file> 等待安装完成即可
    • 默认安装在/usr/lib/jvm
  3. 压缩包安装(以JDK17为例)
    • 下载安装包到/opt (其它目录也行),并进入/opt
    • 解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz
    • 创建文件夹mkdir /usr/local/java
    • 移动jdk mv jdk-17.0.6/ /usr/local/java/
    • 配置环境变量 vim /etc/profile在文件末尾添加以下内容:
      • export JAVA_HOME=/usr/local/java/jdk-17.0.6
      • export PATH=$JAVA_HOME/bin:$PATH
    • 执行source /etc/profile 使配置生效,或者重启系统

安装Tomcat

Apache Tomcat® - Apache Tomcat 9 Software Downloads

  1. yum安装
    • yum install tomcat
    • systemctl <start | stop> tomcat.service 启动/关闭
  2. 压缩包安装(以Tomcat9为例)
    • 下载Tomcat9至/opt目录(可以是其它目录)
    • 执行tar -zxvf apache-tomcat-9.0.71.tar.gz解压
    • 进入/apache-tomcat-9.0.71/bin cd apache-tomcat-9.0.71/bin/
    • 执行./startup.sh启动Tomcat
    • 注意Linux防火墙是否拦截8080端口(指令设置
    • 如需设置环境变量,方法如上
    • 执行./shutdown.sh关闭Tomcat

安装MySql

MySQL :: Download MySQL Community Server

  1. rpm安装(以8.0为例)
    • 下载rpm安装包到指定文件夹 (bundle后缀的文件)
    • 查询是否有mariadb,如有则卸载
      • rpm -qa | grep mariadb 查询
      • rpm -e --nodeps mariadb-libs卸载
    • 解压bundle tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
    • 依次安装:
      • *rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
      • rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
      • *rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
      • *rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
      • rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
      • *rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm
    • 初始root密码查看grep password /var/log/mysqld.log
    • 启动MySql服务 systemctl start mysqld.service
    • 进入MySql并修改初始密码
      • mysql -u root -p
      • ALTER USER root@localhost IDENTIFIED BY '密码';

安装Redis

Zookeeper学习笔记 | Wshape1’s Blogs

Shell入门