Linux

Linux入门

    • 1. 概述
    • 2. 走近 Linux
    • 3. 常用基本命令
      • cd:切换目录
      • pwd:显示当前绝对路径
      • ls:查看目录下文件
      • mkdir:创建目录(文件夹)
      • rmdir:删除空目录
      • touch:创建文件及修改文件时间戳
      • ln:创建软、硬连接文件
      • cp:复制文件和目录
      • rm:删除文件或目录
      • mv:移动文件或改名
      • env:查看环境变量
    • 4. 基本属性
      • 概述
      • chgrp:修改文件(或目录)的所属组
      • chown :修改文件和目录 的 所有者和所属组
      • chmod:修改文件或目录的权限
    • 5. 文本处理
      • cat:连接文件并打印输出
      • more:分屏显示文件内容
      • head:显示文件开头的内容
      • less:查看文件内容
      • tail:显示文件结尾的内容
      • grep:查找文件内容(三剑客)
      • grep:查找文件内容(三剑客)
      • grep:查找文件内容(三剑客)
    • 6. Vim 编辑器
      • 三种工作模式
      • 可视化模式
      • Vim 快捷键
      • Vim 键盘图
    • 7. 用户和用户组
      • 1)概述
      • 2)用户管理
        • useradd:添加新用户
        • passwd:修改密码
        • usermod:修改用户信息
        • chage:修改用户密码状态 & 强制用户修改密码
        • userdel:删除用户
        • id:查看用户的UID和GID
        • su:用户间切换
        • whoami 和 who am i
      • 3)用户组管理
        • groupadd:添加用户组
        • groupmod:修改用户组
        • groupdel:刪除用户组
        • gpasswd:把用户添加进组或从组中删除
        • newgrp:切换用户的有效组
    • 8. 磁盘管理
      • df :查看文件系统硬盘使用情况
      • du:统计目录或文件所占磁盘空间大小
      • mount:挂在设备
      • unmount:卸载已挂在的硬件设备
    • 9. 进程管理
      • 概述
      • ps:查看正在运行的进程
      • pstree:查看进程树
      • kill :终止进程
      • killall :终止特定的一类进程
    • 10. 打包和压缩
      • tar:打包命令
      • .zip 压缩与解压
      • .gz 压缩与解压
      • .bz2 压缩与解压
    • 11. 环境安装
      • JDK (rpm安装)
      • Tomcat(解压缩安装)
      • docker(yum 安装)
    • 常用命令

感谢狂神的分享:B站视频地址

推荐博客:C语言中文网–Linux简介

1. 概述

为什么要学Linux

linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了。但在服务器端、在开发领域linux倒是越来越受欢迎。linux在开源社区的地位依然岿然不动。尤其是作为一个后端程序员,是必须要掌握Linux的!

Linux简介

  • Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
  • Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
  • Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux 发行版


推荐文章常见Linux发行版本


Linux 的发行版说就是:将 Linux 内核与应用软件做一个打包。
Linux_第1张图片
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
Linux_第2张图片

Linux 应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

2. 走近 Linux

环境搭建

环境使用阿里云服务器。如果购买之后设置登录密码、安全组规则,然后通过 xShell工具连接、xFtp 工具传输文件。

  • 如果前期不好操作,可以安装 宝塔面板:安装教程

开机

  • 开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
  • 开机成功后,它会显示一个文本登录界面,会提示用户输入用户名作为参数传给login程序来验证身份,密码是不显示的,输完回车即可!一般来说,用户的登录方式有三种:
    • 命令行登录
    • ssh登录
    • 图形界面登录

关机

关机指令为:shutdown 。不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中:

sync # 将数据由内存同步到硬盘中。
 
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
 
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
 
shutdown –h now # 立马关机
 
shutdown –h 20:25 # 系统会在今天20:25关机
 
shutdown –h +10 # 十分钟后关机
 
shutdown –r now # 系统立马重启
 
shutdown –r +10 # 系统十分钟后重启
 
reboot # 就是重启,等同于 shutdown –r now
 
halt # 关闭系统,等同于shutdown –h now 和 poweroff

系统目录结构

Linux_第3张图片

  • /bin:Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev : Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:这是给主机额外安装软件的目录。比如你安装一个 MySQL 数据库则就可以放到这个目录下。
  • /proc:这是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
    • /usr/bin: 系统用户使用的应用程序。
    • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
    • /usr/src: 内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
  • /www:存放服务器网站相关的资源,环境,网站的项目

3. 常用基本命令

cd:切换目录

cd( Change Directory 的缩写),用来切换工作目录
cd 命令的基本格式如下:

[root@localhost ~]# cd [相对路径或绝对路径]

cd 命令后面可以跟一些特殊符号,表达固定的含义:
Linux_第4张图片

命令 作用
cd [~] 表示回到自己的主目录。对于 root 用户,其主目录为 /root
cd ~vbird 切换到 vbird 这个用户的主目录,亦即 /home/vbird
cd . . 返回上级目录
cd . 进入当前目录(目录没有变化,"."代表当前目录)
cd - 回到刚刚的那个目录

pwd:显示当前绝对路径

当用户登陆 Linux 系统之后,其当前目录就是它的主目录。也可以使用 Linux 系统的 pwd 命令来显示当前目录的绝对路径。

pwd(Print Working Directory 的缩写),功能是显示用户当前所处的工作目录。该命令的基本格式为:

[root@localhost ~]# pwd

whoami 命令用于确定当前登陆的用户。可以看到,root 用户当前所在目录是它的主目录 /root。

[root@localhost ~]# whoami
root
[root@localhost ~]# pwd
/root

ls:查看目录下文件

ls (list 的缩写)。其主要功能是显示当前目录下的内容。此命令的基本格式为:

[root@localhost ~]# ls [选项] 目录名称

ls 命令常用的选项,以及各自的功能如下:
Linux_第5张图片
【注意】当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色(蓝色显示目录,白色显示一般文件)

mkdir:创建目录(文件夹)

mkdir (make directories 的缩写),用于创建新目录。命令格式为:

[root@localhost ~]# mkdir [-mp] 目录名

-m :用于手动配置所创建目录的权限,而不再使用默认权限。
-p :递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及 /home/test/demo

[root@localhost ~]# mkdir -m 711 test2
[root@localhost ~]# ls -l
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

rmdir:删除空目录

rmdir(remove empty directories 的缩写)命令用于删除空目录,此命令的基本格式为:

[root@localhost ~]# rmdir [-p] 目录名

-p 选项用于递归删除空目录。

【注】命令执行成功与否,取决于要删除目录是否是空目录,因为 rmdir 命令只能删除空目录!

# 递归删除下面的目录,要列出从相对路径到最下级的目录:
[root@localhost ~]# rmdir -p lm/movie/jp/cangls

Linux_第6张图片

touch:创建文件及修改文件时间戳

touch命令,用来创建文件、修改文件的时间参数:
Linux_第7张图片
Linux_第8张图片

ln:创建软、硬连接文件

Linux_第9张图片

cp:复制文件和目录

参考文章:Linux cp命令:复制文件和目录

Linux_第10张图片
Linux_第11张图片
Linux_第12张图片
Linux_第13张图片Linux_第14张图片

rm:删除文件或目录

rm 命令,可以永久性地删除指定的文件或目录。在使用 rm 命令时,系统不会产生任何提示信息。此命令的基本格式为:

[root@localhost ~]# rm[选项] 文件或目录

Linux_第15张图片
Linux_第16张图片
Linux_第17张图片

mv:移动文件或改名

mv 命令(move 的缩写)。既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。该命令的基本格式如下:

[root@localhost ~]# mv [选项] 源文件 目标文件

Linux_第18张图片
Linux_第19张图片
Linux_第20张图片

env:查看环境变量

变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。值得一提的是,Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范

使用 env 命令,可以查看 Linux 系统中所有的环境变量:

[root@localhost ~]# env
ORBIT_SOCKETDIR=/tmp/orbit-root
HOSTNAME=livecd.centos
GIO_LAUNCHED_DESKTOP_FILE_PID=2065
TERM=xterm
SHELL=/bin/bash

Linux_第21张图片
Linux_第22张图片

4. 基本属性

概述

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
 在Linux中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组:
Linux_第23张图片
第一个红框中的10个字符,代表了不同的意思:

  • 第1个字符代表这个文件是目录、 文件或链接文件等等:
    • [d] 是目录
    • [-] 是文件;
    • [l] 表示为链接文档( link file);
    • [b] 表示为装置文件里面的可供储存的接口设备(可随机存取装置) ;
    • [c] 表示为装置文件里面的串行端口设备,例如键盘、鼠标( 一次性读取装置)。
  • 后面9字符中,以三个为一组,且均为[rwx] 的三个参数的组合,规定了不同的用户对文件所拥有的权限。
    • 其中,[r] 可读(read)、[w] 可写(write)、[x] 可执行(execute)。
    • 这三个权限的位置不会改变。如果没有权限,就会出现减号[-]。
    • 每个文件的属性由左边第一部分的10个字符来确定 (如下图) :

Linux_第24张图片

  • 第二个绿框:引用计数。文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录
  • 第三个绿框:所有者、所属组
    • 所有者:这个文件属于哪个用户(默认所有者是文件的建立用户)
    • 所属组:默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组
  • 第四个红框:大小,默认单位是字节
  • 第五个红框:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
  • 最后一列:文件名或目录名

chgrp:修改文件(或目录)的所属组

chgrp(change group 的缩写),用于修改文件(或目录)的所属组,基本格式如下:

[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)

【注意】-R(大写)用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

  • 需要注意的一点是:要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 “invaild group name”。
    Linux_第25张图片

chown :修改文件和目录 的 所有者和所属组

chown(change owner 的缩写),主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。
Linux_第26张图片
Linux_第27张图片
Linux_第28张图片

chmod:修改文件或目录的权限

Linux 系统中,文件的基本权限由 r、w、x 三个字符组成,分别有对应的数字:

  • r --> 4
  • w --> 2
  • x --> 1
    Linux_第29张图片

使用数字修改文件权限, chmod 的命令基本格式如下:

-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。
[root@localhost ~]# chmod [-R] 权限值 文件名

Linux_第30张图片
Linux_第31张图片

5. 文本处理

在 Linux 中,文本处理无非是对文本内容做查看、修改等操作。本章将介绍Linux中常用的文本处理命令,以及被称为 Linux三剑客grep、sed 和 awk 命令。

cat:连接文件并打印输出

catconcatenate — 连接、连续)可以用来显示文本文件的内容(类似于 DOS 下的 type 命令);也可以把几个文件内容附加到另一个文件中,即连接合并文件。基本格式如下:

[root@localhost ~]# cat [选项] 文件名
或者
[root@localhost ~]# cat 文件1 文件2 > 文件3
##  注: > 是覆盖,  >>  是追加

Linux_第32张图片
【注】cat命令正序输出;tac命令倒序输出

more:分屏显示文件内容

more 命令可以分页显示文本文件的内容,此命令的基本格式如下:

[root@localhost ~]# more [选项] 文件名

Linux_第33张图片
Linux_第34张图片
在这里插入图片描述

head:显示文件开头的内容

head 命令可以显示指定文件前若干行的文件内容,其基本格式如下:

[root@localhost ~]# head [选项] 文件名

Linux_第35张图片

less:查看文件内容

参考文章:Linux less命令:查看文件内容

使用 more 命令浏览文件内容时,只能不断向后翻看;而使用 less 命令浏览,既可以向后翻看,也可以向前翻看。为了方面用户浏览文本内容,less 命令还提供了以下几个功能:
Linux_第36张图片
less 命令的基本格式如下:

[root@localhost ~]# less [选项] 文件名

Linux_第37张图片

tail:显示文件结尾的内容

tail 命令用来查看文件末尾的数据,其基本格式如下:

[root@localhost ~]# tail [选项] 文件名

Linux_第38张图片
可以看到,使用 tail -n 3 /etc/passwd 命令和 tail -3 /etc/passwd 的效果是一样的。
Linux_第39张图片

grep:查找文件内容(三剑客)

参考文章:Linux grep命令详解:查找文件内容

grep:查找文件内容(三剑客)

参考文章:Linux sed命令完全攻略(超级详细)

grep:查找文件内容(三剑客)

参考文章:Linux awk命令详解

6. Vim 编辑器

三种工作模式

Vim文本编辑器, vi 的升级版。具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器等特点。

  • 如未安装Vim编辑器,CentOS 中使用如下命令安装Vim:
yum install vim      # 此命令有时需要手动确认一些信息
yum -y install vim   # 全自动安装,省略手动确认部分

使用 Vim 编辑文件时,存在 3 种工作模式,分别是 命令模式(Command mode),输入模式 (Insert mode)和 底线命令模式(Last line mode),这 3 种工作模式可随意切换:
Linux_第40张图片

命令模式

  • 使用 Vim 编辑文件,默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置。还可以对文件内容进行复制、粘贴、替换、删除等操作。
  • 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i 被当作了一个命令。
    Linux_第41张图片

输入模式

Linux_第42张图片

底线命令模式

  • 在命令模式下按英文 " : " 键,进入底线命令模式。此时 Vim 窗口的左下方出现一个 " : " 符号
    在这里插入图片描述
  • 指令执行后 Vim 会自动返回命令模式。如想直接返回,按 Esc 即可

对于新手来说,经常不知道自己处于什么模式,可以按一次 Esc 键返回命令模式。如果你多按几次 Esc 键后听到"嘀----"的声音,则代表你已经处于命令模式了。

可视化模式

在 Vim 命令模式下键入不同的键,可以进入不同的可视化模式,进行选中文本的操作:

命令 作用
v(小写) 字符可视化模式,选择文本的是以字符为单位的,(要一个个字符的选中要操作的文本)
V(大写) 行可视化模式,选择文本的选择是以行为单位的,(可以一行一行的选中要操作的文本)
Ctrl+v(组合键) 块可视化模式,可以选中文本的一个矩形区域作为目标文本:
以按下 Ctrl+v 位置作为矩形的一角,光标移动的终点位置作为它的对角。

Linux_第43张图片

Vim 快捷键

查找文本

快捷键 作用
/abc 从光标所在位置向前查找字符串 abc
?abc 从光标所在位置,向后查找字符串 abc
/^abc 查找以 abc 为行首的行
/abc$ 查找以 abc 为行尾的行
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指令

替换&替换

快捷键 作用
r 替换光标所在位置的字符(替换一个
R 从光标所在位置开始替换字符,按“Esc”可以结束(替换多个,类似windows的Insert
: s /a1 /a2 /g 将当前光标所在行的,所有 a1 替换为 a2
:n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中,所有 a1 替换为 a2
:g/a1/a2/g 将文件中,所有 a1 替换为 a2

Linux_第44张图片

删除文本

快捷键 作用
x 删除光标所在位置的字符
dd 删除光标所在行
ndd 删除当前行(包括此行)后 n 行文本
dG 删除 光标所在行至文件末尾 的所有内容
D 删除光标位置到行尾的内容
:a1,a2d 删除 a1 行 至 a2 行 的文本内容

复制和粘贴文本

快捷键 作用
y 复制已选中的文本到剪贴板
yy 复制光标所在行板。此命令前加数字 n,可复制多行
yw 复制光标位置的单词
p(小写) 将剪贴板中的内容,粘贴到光标
P(大写) 将剪贴板中的内容,粘贴到光标

Linux_第45张图片

保存退出文本

Vim 的保存和退出,是在 底线命令模式 中进行的:

快捷键 作用
:wq 保存并退出 Vim 编辑器
:wq! 保存并 强制 退出 Vim 编辑器
:q 不保存就退出 Vim 编辑器
:q! 不保存,且强制退出 Vim 编辑器
:w 保存但不退出 Vim 编辑器
:w! 强制保存文本
:w filename 另存到 filename 文件
x! 保存文本并退出 Vim 编辑器(更通用的一个 vim 命令)
ZZ 直接退出 Vim 编辑器

光标以单词为单位移动

快捷键 作用
w 或 W 光标移动至下一个单词的单词首
b 或 B 光标移动至上一个单词的单词首
e 或 E 光标移动至下一个单词的单词尾
nw 或 nW n 为数字,表示光标向右移动 n 个单词
nb 或 nB n 为数字,表示光标向左移动 n 个单词

光标移动至行首、行尾

快捷键 作用
0 或 ^ 光标移动至当前行的行首
$ 光标移动至当前行的行尾
n$ 光标移动至当前行之后 n 行的行尾,n为数字

光标移动至指定字符

快捷键 作用
fx 光标移动至当前行中下一个 x 字符处
Fx 光标移动至当前行中上一个 x 字符处

光标移动到指定行

快捷键 作用
gg 光标移动到文件开头
G 光标移动至文件末尾
nG 光标移动到第 n 行,n 为数字
:n 编辑模式下的快捷键,可以将光标快速定义到指定行的行首

Linux_第46张图片

撤销和恢复撤销

命令模式下,撤销和反撤销快捷键如下:

快捷键 作用
u(小写) (undo)撤销一次对文本的修改( 类似 Windows 中 Ctrl + z)
Ctrl+R (Redo)恢复最近一次的撤销操作。(类似Windows 中 Ctrl +y)
U(大写) 第一次会撤销对光标所在行做过的全部操作,
第二次使用该命令会恢复对该行文本做过的所有操作。

Vim 键盘图

参考文章:Vim命令速查表

7. 用户和用户组

1)概述

  • 向管理员申请账户,才能使用系统资源。每个用户有唯一的 用户名和密码,登录成功默认进入自己的主目录。
  • 通过建立不同属性的用户,一方面可以合理地利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
  • 用户组是具有相同特征用户的逻辑集合。
    Linux_第47张图片

UID 和 GID

  • 登陆 Linux 系统时,虽然输入的是用户名和密码,但 Linux 并不认识用户名,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 将用户名与 ID 的对应关系,存储在 /etc/passwd 文件中。说白了,用户名并无实际作用,仅是为了方便用户的记忆而已。
  • Linux 中,每个用户的 ID 细分为 2 种:分别是用户 ID(User ID)和组 ID(Group ID),分别存储在 /etc/passwd/etc/group 文件中。这与文件的 属主 、 属组 两种属性相对应。

/etc/passwd

  • Linux 中 /etc/passwd 是系统用户配置文件,存储了所有用户的基本信息,并且所有用户都可以对此文件执行读操作。每行记录对应一个用户。
  • 每行用户信息都以 ":"划分为 7 个字段,每个字段的含义如下:
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
  • 具体含义,参考:Linux /etc/passwd 内容解释
    Linux_第48张图片

/etc/shadow

  • /etc/shadow (又称为“影子文件”),用于存储 Linux 中用户的密码。
  • 只有 root 用户拥有读权限,保证了密码的安全性
  • 具体含义参考:Linux /etc/shadow 内容解析
    在这里插入图片描述

/etc/group

  • /ect/group 文件是用户组配置文件,存放用户组的所有信息(是记录 GID 和 组名相对应的文件)。
  • 每一行各代表一个用户组, " : " 作为分隔符,分为 4 个字段:
组名:密码:GID:该用户组中的用户列表

在这里插入图片描述

  • 具体含义参考: Linux /etc/group文件解析

/etc/gshadow

  • 组用户信息存储在 /etc/group 中,而组用户的密码信息存储在 /etc/gshadow 文件中
  • 每行代表一个组用户的密码信息,用 “:” 分隔为 4 个字段,含义如下:
组名:加密密码:组管理员:组附加用户列表

Linux_第49张图片

  • 具体含义参考:Linux /etc/gshadow文件内容解析

/etc/login.defs

  • /etc/login.defs 用于在创建用户时,对用户的一些基本属性做默认设置。
  • 指定用户 UID 和 GID 范围、用户的过期时间、密码最大长度。。。
    Linux_第50张图片

2)用户管理

useradd:添加新用户

Linux_第51张图片

  • 详细参考:Linux useradd命令详解
passwd:修改密码
  • passwd: 修改用户密码,基本格式如下:
[root@localhost ~]#passwd [选项] 用户名

Linux_第52张图片

  • 详细参考:Linux passwd命令:修改用户密码
usermod:修改用户信息
  • usermod:修改 已存在用户 的信息,命令格式如下:
[root@localhost ~]#usermod [选项] 用户名

Linux_第53张图片

  • 详细参考:Linux usermod命令:修改用户信息
chage:修改用户密码状态 & 强制用户修改密码
  • chage:可以显示更加详细的用户密码信息(类似 passwd -S),也可以修改用户密码:
[root@localhost ~]#chage [选项] 用户名
  • 详细参考:Linux chage用法详解:修改用户密码状态
    Linux_第54张图片
    Linux_第55张图片
userdel:删除用户

userdel :删除用户的相关数据。此命令只有 root 用户才能使用,基本格式:

[root@localhost ~]# userdel -r 用户名

Linux_第56张图片

  • 详细参考:Linux userdel命令详解:删除用户
id:查看用户的UID和GID

id 命令:查询用户的UID、GID 和附加组的信息:

[root@localhost ~]# id 用户名

Linux_第57张图片

su:用户间切换
  • su:用户间切换,命令格式如下:
[root@localhost ~]# su [选项] 用户名
  • 普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码;从 root 用户切换至其他用户,无需知晓对方密码。
    Linux_第58张图片

su 和 su - 的区别

使用 su 命令时,有 - 和没有 - 是完全不同的- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
Linux_第59张图片

whoami 和 who am i
  • whoami :打印当前执行操作的用户名
  • who am i :打印登陆当前 Linux 系统的用户名
  • 执行 whoami 命令,等同于执行 id -un 命令;执行 who am i 命令,等同于执行 who -m 命令。

Linux_第60张图片

3)用户组管理

groupadd:添加用户组

Linux_第61张图片

groupmod:修改用户组

Linux_第62张图片

groupdel:刪除用户组

Linux_第63张图片

gpasswd:把用户添加进组或从组中删除

Linux_第64张图片
Linux_第65张图片

newgrp:切换用户的有效组

在这里插入图片描述

8. 磁盘管理

df :查看文件系统硬盘使用情况

  • df 命令:用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
  • 与整个文件系统有关的数据,都保存在 Super block(超级块)中,而 df 命令主要读取的数据几乎都针对的是整个文件系统,所以 df 命令主要是从各文件系统的 Super block 中读取数据。
    Linux_第66张图片
    Linux_第67张图片
    Linux_第68张图片

du:统计目录或文件所占磁盘空间大小

  • 使用 ls -r 可以看到文件的大小的,但目录的大小基本都是 4KB。这是因为目录下的 子目录名子文件名 是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小。
  • du :统计文件目录及子目录和子文件 所占磁盘空间的实际大小:
    Linux_第69张图片
[root@localhost ~]# du
# 统计当前目录及所有子目录的磁盘占用量大小,但不统计子文件

[root@localhost ~]# du -a
# 统计当前目录的总大小,以及所有子文件、子目录 所占磁盘的大小。默认单位为 KB

[root@localhost ~]# du -sh
# 只统计磁盘占用量总的大小,同时使用习惯单位显示

Linux_第70张图片

mount:挂在设备

  • 所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。
  • 通过学习 Linux 文件系统,我们可以对挂载的含义进行引申: 挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。 而要将文件系统挂载到 Linux 系统上,就需要使用 mount 挂载命令。
    Linux_第71张图片
    Linux_第72张图片
    Linux_第73张图片
    mount 挂在设备:
    Linux_第74张图片
    Linux_第75张图片

unmount:卸载已挂在的硬件设备

Linux_第76张图片

9. 进程管理

进程管理:http://c.biancheng.net/view/1061.html

概述

程序和进程

  • 程序:使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合
  • 进程:进程是正在执行中的程序。操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。在操作系统中,所有可以执行的程序与命令都会产生进程。
  • 子进程:某些进程会产生一些新的进程,称为 子进程,而把这个进程称作父进程子进程是依赖父进程而产生的,如果父进程不存在,那么子进程也不存在了

手工启动进程

手工启动进程:指的是由用户输入命令直接启动一个进程,根据所启动的进程类型和性质的不同,其又可以细分为 前台启动后台启动 2 种方式。

  • 前台启动进程:这是手工启动进程最常用的方式,因为当用户输入一个命令并运行,就已经启动了一个进程,而且是一个前台的进程。此时系统其实已经处于一个多进程的状态(一个是 Shell 进程,另一个是新启动的进程)。
    Linux_第77张图片
  • 后台启动进程:进程直接从后台运行。用的相对较少,除非该进程非常耗时,且用户也不急着需要其运行结果的时候。
    Linux_第78张图片

调度启动进程

  • 在 Linux 系统中,任务可以被配置在指定的时间、日期或者系统平均负载量低于指定值时自动启动。
  • 例如,Linux 预配置系统任务的运行,使系统能够实时被更新;系统管理员也可以使用自动化任务,定期备份数据。

ps:查看正在运行的进程

博客:ps命令详解

psProcess Status):可以查看所有运行进程的详细信息。基本格式如下:

[root@localhost ~]# ps [选项]

Linux_第79张图片
常用的选项组合方式如下:

#查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost ~]# ps aux

#查看系统中所有的进程,使用 Linux 标准命令格式
[root@localhost ~]# ps -le

# 只查看到当前 Shell 产生的进程
[root@localhost ~]# ps -l

# 查询相关信息:
[root@localhost ~]# ps-aux|grep mysql
[root@localhost ~]# ps -ef |grep mysql

ps -aux

Linux_第80张图片
Linux_第81张图片

ps -le

与 “ps aux” 一样, “ps -le” 命令也能看到系统中所有的进程,且看到的信息更加详细,比如父进程的 PID、优先级等。两个命令掌握其中一个就行。

Linux_第82张图片
Linux_第83张图片

pstree:查看进程树

pstree :以树形结构显示程序和进程之间的关系:

[root@localhost ~]# pstree [选项] [PID或用户名]

Linux_第84张图片

  • 使用 pstree 时,如果不指定 PID ,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;若指定 PID 或 用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。

  • init 进程是系统启动的第一个进程(PID 为 1),也是系统中所有进程的父进程
    Linux_第85张图片

  • 使用 pstree 查看某个用户都启动了哪些进程,以 mysql 用户为例:

[root@1ocalhost ~]# pstree mysql
mysqid---6*[{mysqid}]

kill :终止进程

kill 命令的执行原理是:向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作:

[root@localhost ~]# kill [信号] PID

Linux_第86张图片

killall :终止特定的一类进程

killall :通过程序的进程名来杀死一类进程,常与 ps、pstree 等命令配合使用:

[root@localhost ~]# killall [选项] [信号] 进程名

注意】:killall 的信号类型同 kill 一样。常用的选项有如下 2 个:

  • -i:交互式,询问是否要杀死某个进程;
  • -I:忽略进程名的大小写;
    Linux_第87张图片

10. 打包和压缩

  • 归档(打包)指的是将多个文件和目录集中存储在一个文件中
  • 压缩:利用算法对文件进行处理,从而缩减占用的磁盘空间。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。

tar:打包命令

tar :最常用的归档( 打包 )命令,可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为 解打包

tar命令做 打包 操作

使用 tar 命令归档的包通常称为 tar 包(tar 包文件都是以“.tar”结尾的),基本格式为:

[root@localhost ~]# tar [选项] 源文件或目录

Linux_第88张图片
Linux_第89张图片

tar命令做 解打包 操作

当 tar 命令用于对 tar 包做 解打包 操作时,格式如下:

[root@localhost ~]#tar [选项] 压缩包

Linux_第90张图片
Linux_第91张图片

tar命令做 打包和压缩解压缩和解打包)操作

你可能会觉得 Linux 实在太不智能了,一个打包压缩,居然还要先打包成 “.tar” 格式,再压缩成 “.tar.gz” 或 “.tar.bz2” 格式。
其实 tar 命令是可以同时打包压缩的,前面的讲解之所打包和压缩分开,是为了让大家了解在 Linux 中打包和压缩的不同。
Linux_第92张图片

.zip 压缩与解压

.zip” 格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,是一种相当简单的分别压缩每个文件的存储格式,几种主流的压缩格式(zip、rar等)之一。

zip 压缩

注意】zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用

[root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表

Linux_第93张图片
zip 命令的基本使用:

// 压缩单个文件
[root@localhost ~]# zip ana.zip anaconda-ks.cfg

// 同时压缩多个文件到test.zip压缩包中, 文件用空格隔开
[root@localhost ~]# zip test.zip install.log install.log.syslog

// 使用 zip 命令压缩目录,需要使用“-r”选项
[root@localhost ~]# mkdir dir1            // 创建目录
[root@localhost ~]# zip -r dir1.zip dir1  // 压缩目录

unzip 查看和解压缩

[root@localhost ~]# unzip [选项] 压缩包名

Linux_第94张图片

// 不论是文件、目录压缩包,都可以直接解压缩
[root@localhost ~]# unzip dir1.zip

// 使用 -d 指定解压缩位置
[root@localhost ~]# unzip -d /tmp/ ana.zip

.gz 压缩与解压

gzip:压缩文件

  • gzip 命令只能用来压缩文件,不能压缩目录。即便指定了目录,也只能压缩目录内的所有文件。
  • 压缩得到的新文件,其扩展名通常标记为 “ .gz
[root@localhost ~]# gzip [选项] 源文件

命令中的源文件:当进行压缩操作时,指的是普通文件;当进行解压缩操作时,指的是压缩文件
Linux_第95张图片

  • 基本压缩:压缩文件生成,但是删除源文件。(只需指定源文件名,不需要指定压缩之后的压缩包名)
#压缩instal.log 文件
[root@localhost ~]# gzip install.log

[root@localhost ~]# ls       #压缩文件生成,但是源文件也消失了
install.log.gz
  • 保留源文件压缩
# 使用-c选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样可以缩文件的同时不删除源文件
[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz

# 压缩文件和源文件都存在
[root@localhost ~]# ls
anaconda-ks.cfg     anaconda-ks.cfg.gz

Linux_第96张图片

gunzip:解压缩文件或目录

  • gunzip 用于解压被 gzip 压缩过的文件(扩展名为 .gz),( 也能用 gzip 自己: gzip -d 压缩包 ):
[root@localhost ~]# gunzip [选项] 文件

Linux_第97张图片

  • 直接解压缩文件(只会解压缩目录下的文件,而不会解打包),下面两条命令效果相同:
[root@localhost ~]# gunzip install.log.gz

[root@localhost ~]# gzip -d install.log.gz

Linux_第98张图片

.bz2 压缩与解压

" .bz2 "格式是 Linux 的另一种压缩格式。从理论上来讲," .bz2 "格式的算法更先进、压缩比更好;而 ".gz"格式相对来讲的时间更快。

bzip2 :压缩文件

  • bzip2 命令同 gzip 命令类似,只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件。当执行压缩任务完成后,会生成一个以“.bz2”为后缀的压缩包:
[root@localhost ~]# bzip2 [选项] 源文件

Linux_第99张图片

【例 1】直接压缩文件,同时删除源文件  ".bz2"格式
[root@localhost ~]# bzip2 anaconda-ks.cfg

【例 2】压缩的同时,保留源文件。
[root@localhost ~]# bzip2 -k install.log.syslog

bunzip2:bz2格式的解压缩命令

  • bunzip2bzip2 -d 命令一样,都能解压“.bz2”格式的压缩包文件
  • bunzip2 命令只能用于解压文件,即便解压目录,也是解压该目录以及所含子目录下的所有文件:
[root@localhost ~]# bunzip2 [选项] 源文件

Linux_第100张图片

# 解压缩 .bz2 格式压缩包,下面两条命令效果相同:
[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2

[root@localhost ~]# bzip2 -d install.log.syslog.bz2

# 使用 bzcat 命令,不解压就可查看".bz2"格式的纯文本压缩包(和".gz"格式类似)
[root@localhost ~]# bzcat install.log.syslog.bz2

11. 环境安装

JDK (rpm安装)

  1. 下载地址:JDK官方下载
    Linux_第101张图片
  2. 安装java环境
java -version 检测当前系统是否存在Java环境 和windows命令一样
#如果有的话就需要卸载

rpm -qa|grep jdk 查看JDK版本信息

rpm -e --nodeps jdk_ 卸载

# 卸载完毕后可安装JDK
rpm -ivk rpm包 

Linux_第102张图片
3. 配置环境变量 :/etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_351-amd64
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export JAVA_HOME  CLASSPATH  PATH	# 导出这几个变量

】:使用冒号 “ : ”分开,不是分号“ ; ”
在这里插入图片描述
4. 使环境变量生效:

[root@localhost ~]# source /etc/profile

在这里插入图片描述
】如果环境变量配置错误,导致Linux基本命令失效,运行下面的命令:

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

Tomcat(解压缩安装)

  1. 官网地址:Apache Tomcat
    Linux_第103张图片
    在这里插入图片描述
  2. 上传到服务器中,自定义目录下(如 “/home/ide/”),解压缩
tar apache-tomcat-9.0.69.tar.gz
  1. 开启防火墙
     --zone 作用域
     --add-port-80/tcp 添加端口, 格式为:端口/通讯协议
     --permanent 永久生效,没有此参数重启后失效
    使用域名解析:如果端口是80 (http)或者443(https)可以直接访问;如果是9000 8080 ,就需要通过Apcahe或者Nginx做一下反向代理
# 开启防火墙端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 重启防火墙
systemctl restart firewalld.service

# 查看所有开启的端口。如果是阿里云,需要配置安全组规则
firewall-cmd --list-ports
  1. 进入Tomcat的bin目录下,启动Tomcat
./startup.sh   #执行 

./shutdown.sh  #停止

docker(yum 安装)

  1. 检查 CentOS 版本(Linux各发行版本,命令不同)
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
  1. 安装准备环境
# yum install 安装命令 -y  所有的提示都为y
yum -y install 包名

yum -y install gcc
yum -y install gcc-c++
  1. 卸载以前的docker
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 下载环境
yum install -y yum-utils \device-mapper-persistent-data \lvm2
  1. 使用国内阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新yum安装包
yum makecache fast
  1. 安装 docker ce
yum -y install docker-ce docker-ce-Cli containerd.io
  1. 启动docker
systemctl start docker
  1. 测试
docker version
docker run hello-world
docker images

Linux_第104张图片

常用命令

echo

grep

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