⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/qq_43647359/article/details/104792569 「南独酌酒nvn」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

流量如水,文章就是一个瓶子,标题是瓶口,内容是瓶身。 瓶子装水有多快依赖瓶口大小,瓶子装水有多少依赖瓶身大小。

操作系统概述

操作系统 Operating System 简称 OS,通俗讲就是一款软件,不过和一般的软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他的软件都必须在操作系统的支持下才能运行。

Linux 操作系统安装

关于 Linux 的安装看这篇——Linux的安装教程

https://blog.csdn.net/huaijiu123/article/details/82083452

Linux 文件系统

  • /var:包含在正常操作中被改变的文件、假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。
  • /home:包含用户的文件:参数设置文件、个性化文件、文档、数据、EMALL、缓存数据等,每增加一个用户,系统就会根据其用户名在 home 目录下新建和其他用户同名的文件夹,用于保存其用户配置。
  • /proc:包含虚幻的文件,他们实际上并不存在于磁盘上,也不占用任何空间(用 ls-l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。
  • /bin:包含系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
  • /etc:为操作系统的配置文件目录(防火墙、启动项)
  • /root:为系统管理员(也叫超级用户或根用户)的 Home 目录。
  • /dev:为设备目录,Linux 下设备被当成文件,这样一来硬件被抽象化、便于读写、网络共享以及需要临时装载到文件系统中,正常情况下,设备会有一个独立的子目录,这些设备的内容会出现在独立的子目录下。

Linux 命令操作

  1. 查看当前目录命令: pwd
  2. 打开文件夹命令: cd
    打开指定文件夹:cd [目录名称]
    打开当前用户的根目录:cd ~
    返回上级目录:cd …
    返回进入目录:cd -
    打开根目录:cd /
  3. 浏览目录下的文件列表命令:ls
    以列的方式查看当前目录下的文件列表:ls -l
    查看当前目录下所有的文件(包括隐藏文件):ls -a
    以列表的方式查看当前目录下的所有文件:ls -la
  4. 创建文件目录命令:mkdir
    新建文件目录:mkdir 文件夹名称
    递归新建多级目录:mkdir -p 文件夹名称
    例如在用户目录下新建 test 目录,命令这样写:
    mkdir -p test/test1/test2/test3 递归新建多级目录的写法
  5. 删除文件目录命令:rmkdir
    删除指定目录:rmkdir 目录名称
    递归删除指定目录及中间目录:rmdir -p 目录名称 这里没有写错,没有字母 k
  6. 删除文件或者目录命令:rm
    常用命令:rm -rf [目录或文件] rm -ri [目录或文件]
    强制删除文件或目录:rm -rf 目录或者文件
    在删除前询问是否确认删除:rm -ri 目录或文件

因为强制删除的后果不太好,一般不建议使用 rm -rf 进行文件删除
rm 命令中不跟 r 参数,无法删除目录,只能删除文件

  1. 复制文件或目录命令:cp
    递归复制目录1下的所有的文件和文件夹到目录2:cp -r [目录1][目录2]
    执行复制操作时覆盖原有目录前询问用户:cp -ri [目录1][目录2]
  2. 移动文件、修改文件名命令:mv
    将文件夹1名称更改为文件夹2:mv 文件1 文件2 (给文件更名)
    将目录1的文件移动到目录2:mv 目录2 目录2 (将目录1的文件移动到目录2)
  3. 创建文件命令:touch
    touch 文件名称
  4. 查看、编辑文件命令:vi
    vi 命令为 UNIX 操作系统或者类 UNIX 操作系统都有具有的功能强大的文件编辑命令,用户输入 vi ++ 文件名,便可以进入 vi 模式进行文件内容的查看和编辑,如果文件已经存在,则直接打开文件,如果文件不存在,则系统将打开一个全新的空文件。
    vi 的三种模式如下:
  • 命令模式
    当用户使用 vi 命令打开文件后,则进入命令模式,用户可以输入命令来执行各种功能。
取值 说明
L 光标移至屏幕最后一行
space 光标右移一个字符
backspace 光标左移一个字符
N+ 光标向上移动 N 行
n+ 光标移下移 n 行
  • 输入模式
    如果用户要对文件做修改,则可以使用下面几种命令,进入输入模式,用户进入输入模式之后,可以任意修改文件,除了 Esc 键外,用户输入的任何字符都会被作为内容写入文件中,用户输入 Esc 可以对文件进行相关操作。
取值 说明
a、i、r、o、A、I、R、O 编辑模式
dd 删除当前光标
ndd 删除 n 行
  • 末行模式
    如果用户完成编辑命令,则可以按照 esc + “:” 进入末行模式,用户可以对文件内容继续进行搜索,也可以输入 “:wq!” 进行文件保存并退出,或者输入 “:q!” 强制退出文件编辑。
取值 说明
:wq! 保存并退出
:q! 强制退出
: s/字符串 1/字符串 2 将文件中出现的字符串 1 替换为字符串2
:set nu 显示所有行号
  1. 查看、编辑文件命令:cat
    显示一个小的文件的内容:cat 文件名称
    创建并打开一个新的文件:cat > 文件名称
  2. 查看文件开头内容命令:head
    head [参数] [文件名]
    例如,使用 head 命令显示某个文件开始的 n 行数据: head -n 文件名称
取值 说明
-n < 行数 > 显示的行数
默认 默认显示文件前 10 行数据
  1. 查看文件结尾内容命令:tail
    动态加载某个文件的内容(常用于查看日志文件):tail -f 文件名称
    展示文件最后几行的数据:tail -n 行数文件名称

Linux 权限管理

用户和用户组

  • 用户是指在一个操作系统中,一系列权限的集合体,操作人员通过用户名和口令可以在系统中执行某一些被允许的操作。不同的用户可以具有不同的权限。Linux 操作系统中每个用户都具有唯一标识 UID,当使用命令创建用户时,如果不指定用户的 UID,则系统将自动为其分配 UID。
  • 用户组就是具有相同特征的用户的集合体,在 Linux 系统中,每一个用户都属于至少一个用户组。Linux 操作系统中每个用户分组都具有唯一标识 GID,当使用命令创建用户组时,如果不指定用户组的 GID,则系统将自动为其分配 GID。
    当使用 -u 指定用户 id 时,用户 id 尽量大于500,以免冲突。因为 Linux 操作系统安装后,会默认建立一些用户,所以可能会占用 500 之内的 id 号。
    Linux 权限机制有以下特点:
    1. 系统有一个权限最大的用户,其名称为 root ,root 用户属于 root 用户组。
    2. 系统默认只有 root 权限可以添加和删除用户。
    3. 添加用户之后,如果没有给用户指定用户组,则系统会为用户添加一个同名的用户组,用户属于该组。
    4. root 切换到普通用户无需登录,普通用户切换到 root 用户需要登陆。
    5. root 可以给用户赋予和回收某一个文件的读、写、执行的权限。

用户操作命令

  1. 切换用户命令:su
    su [用户名] 或者 su -[用户名]
    su[用户名]和 su -[用户名]都可以切换用户,前者类似于临时切换用户,当使用该命令进行切换新用户时,用户配置仍然沿用原来的用户配置,如环境变量、系统变量等。而后者进行切换用户时,环境变量、系统设置全部切换成新用户的用户配置。
  2. 查看当前登陆用户命令:whoami
  3. 查看当前用户所属分组命令:groups
  4. 查看当前用户 UID 和 GID 命令:id
  5. 添加新用户命令:useradd
取值 说明
-c 代表 comment 指定一段注释性描述
-d 指定用户主目录
-g 指定用户所属的用户组
-G 指定用户所属的附加组
-u 指定用户的用户好
缺省 直接添加用户

在 Linux 操作系统中添加用户:useradd 用户名
在 Linux 操作系统中添加用户并指定用户 UID:useradd -u 指定的 UID 用户名
6. 修改用户密码命令:passwd
例如:修改当前用户名为 sang 的用户密码:passwd sang
在添加用户之后,只有为其设置密码,用户才能登陆

取值 说明
-d 删除密码。仅有系统管理员才能使用
-f 强制执行
-k 设置只有密码过期后才能更新
-l 锁着密码
-s 列出面膜的相关信息,仅有系统管理员才能使用
-u 解开已上锁的账号
  1. 删除用户命令:userdel
    删除用户:userdel 用户名
    删除用户并同时删除其登陆信息:userdel -r 用户名
取值 说明
-r 删除用户以及其登陆日志等信息
-f 强制删除用户,即使用户已经登陆
缺省 直接删除用户
  1. 修改用户信息命令:usermod
    语法:usermod [选项] [参数] [用户名]
    修改用户登录名:usermod -l 新用户名 旧用户名
    修改用户所属分组:usermod -g 新组名称 用户名
取值 说明
-c 修改用户账号的备注文字
-d 修改用户登陆时的目录
-e 修改账号的有效期
-f 修改密码过期后多少天关闭账号
-g 修改用户所属的群组
-G 修改用户所属附加组
-l 修改用户账号名称
-L 锁定用户密码,使密码无效
-u 修改用户 id
-U 解除密码锁定
  1. 添加用户组命令:groupadd
    语法:groupadd [选项] [组名称]
    修改用户登陆名:groupadd 组名
    修改用户所属分组:groupadd -g 组 GID 组名
取值 说明
-g 指定工作组的 id
-r 创建系统工作组
-o 允许添加组 ID 不唯一的工作组
缺省 添加用户分组

权限操作

  • Linux 操作系统为文件定义了读、写、执行三种权限,不同的用户或者用户组可以具有不同的权限,系统采用 “r”、“w”、“x” 来分别表示文件的读、写、执行权限。使用 ls -l 命令可以查看到用户在当前目录或者文件的操作权限。
    举列:drwxr -xr -x. 2 root root 4096 Sep 23 2011 bin
    从左至右分别表示如下含义:
    • d:代表 bin 数目目录而不是文件
    • rwx:代表拥有者具有读、写、执行的权限
    • r -x:代表同组用户具有读、执行的权限,但是没有写权限
    • r -x:代表其他组用户具有读、执行权限,没有写权限

常用的变更权限命令为:chmod
语法:chmod [选项] [参数]

取值 说明
-c 显示指令执行过程,但只返回更改的部分
-f 不显示错误信息
-r 递归授权
-v 显示指令执行过程

chmod 的参数可以分为两种,分别是权限模式和数字模式。

  1. 权限模式:权限模式使用 u、g、o 分别代表拥有者、同组用户、其他组用户,使用 + 和一代表赋予和收回权限,使用 r、w、x 代表读、写、执行权限。
    例如:将文件01的执行权限给当前用户,写权限赋给用户所在的用户组和其他用户。
    chmod -r U+X,G+W F01
    例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读、写权限赋给用户所在的用户组和其他用户。
    chmod -r u=rwx,g=rw,o=rw f01
  2. 数字模式:为了简化授权步骤,用户也可以采用数字模式进行授权,使用二进制的形式代表 r、w、x 三种权限,如 101 (5) =r -x,111 (7) =rwx,100 (3) =r- -
    例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读和执行权限赋给用户组、将写和执行权限赋给其他用户。
    chmod 753 -r f01
    例如:将文件 f01 的读、写、执行权限赋给所有用户。
    chmod 777 -r f01

Linux 进程管理

在 Linux 的应用中,我们需要对进程进行管理,如查看某个进程是否启动、以及在必要的时刻,杀掉某个线程。

  1. 查看进程命令:ps
    ps 命令是 Linux 操作系统中查看进程的命令,通过 ps 命令我们可以查看 Linux 操作系统中正在运行的过程,并可以获得进程的 PID(进程的唯一标识),通过 PID 可以对进程进行相应的管理。

ps -ef | grep [进程关键字]

  • 根据进程关键词查看进程命令显示如下,显示的进程列表中第一列表示开启进程的用户,第二列表示进程唯一标识 PID,第三列表示父进程 PPID,第四列表示 CPU 占用资源比列,最后一列表示进程所执行程序的具体位置。

[shang@localhost ~]$ ps -ef|grep sshd
root 1829 1 0 May24 ? 00:00:00 /usr/sbin/sshd
shang 24166 24100 0 20:17 pts/2 00:00:00 grep sshd
[shang@localhost ~]$

  1. 杀掉进程命令:kill
    当系统中有进程进入死循环,或者需要被关闭时,我们可以使用 kill 命令对其关闭。
    kill -9 [PID] PID 为 Linux 操作系统中进程的标识

Linux 其他常用命令大全

  1. 清屏命令:clear
  2. 查询命令详细参数命令:man
  3. 挂载命令:mnt
  4. 远程连接服务 SSH 相关命令:
  • 启动 SSH 服务命令:service sshd start
  • 重启 SSH 服务命令:service sshd restart
  • 关闭 SSH 服务命令:service sshd stop
  1. Linux 大多数情况下都是远程服务器,开发者通过远程工具连接 Linux ,启动了某个项目的 JAR,一旦窗口关闭,JAR 也就停止运行了,因此一般通过如下命令启动 JAR:nohup java -jar jar-0.0.1-SNAPSHOT.jar &
    这里多了 nohup ,表示当前窗口关闭时服务不挂起,继续在后台运行

Linux 系统软件安装

常用软件安装

Linux 下常用的软件安装方式有3种。

  • tar 安装:如果开发商提供的是 tar、tar.gz、tar.bz 格式的包(其中 tar 格式的为打包后没有压缩的包,gz 结尾的是按照 gzip 打包并压缩的软件包,tar.bz 是按照二进制方式打包并压缩的软件包),可以采用 tar 包安装,tar 安装方式本质上是解压软件开发商提供的软件包,之后在通过相应配置,完成软件的安装。
  • rpm 安装:rpm 安装方式是 redhat Linux 系列推出的一个软件包管理器,类似于 Windows 下的 exe 安装程序,可以直接使用 rpm 命令安装。
  • yum 安装:yum 安装本质上依然是 rpm 包安装,和 rpm 安装方式的不同之处是用户可以通过 yum 参数,指定安装的软件包,系统将自动从互联网上下载相应的 rpm 软件包。而无须用户关心软件包的下载地址,以及软件包的依赖关系。

软件安装常用命令

  1. 解压压缩命令:tar
    语法:tar [选项] [压缩包]
    解压 gzip 包:tar -zxvf [包名]
    解压 bz 包:tar -jxvf [包名]
    解压普通包:tar -xvf [包名]
取值 说明
-c 指定特定目录压缩
-x 从备份文件中还原文件
-t 列出备份文件的内容
-r 添加文件到已经压缩的文件
-z 有 gzip 属性的(后缀是 gz 的)
-j 有 bz2 属性的(后缀是 bz 的)
-Z 有 cpmpress 属性的
-v 显示所有进程
-O 将文件解压到标准输出
-f 使用档案名称
  1. 安装卸载命令:rpm
    语法:rpm [选项] [软件包]
    查询是否已经安装了某软件包:rpm -qa|grep [软件包关键词]
    卸载已经安装的软件包:rpm -e 软件包全名
    安装软件包并查看进度:rpm -ivh 软件包路径
取值 说明
-ivh 安装显示安装进度
-Uvh 升级软件包
-qpl 列出 rpm 软件包内的文件信息
-qpi 列出 rpm 软件包的描述信息
-qf 查找指定文件属于哪个 rpm 软件包
-Va 校验所有的 rpm 软件包,查找丢失的文件
-e 删除包
-qa 查找已经安装的 rpm 包
文章目录
  1. 1. 操作系统概述
  2. 2. Linux 操作系统安装
  3. 3. Linux 文件系统
  4. 4. Linux 命令操作
  5. 5. Linux 权限管理
    1. 5.1. 用户和用户组
    2. 5.2. 用户操作命令
    3. 5.3. 权限操作
  6. 6. Linux 进程管理
  7. 7. Linux 其他常用命令大全
  8. 8. Linux 系统软件安装
    1. 8.1. 常用软件安装
    2. 8.2. 软件安装常用命令