Linux 系统的安装
1. 虚拟机VM的安装
vm15.5.1: https://www.nocmd.com/windows/740.html
2. Centos7.6 安装
centos7.6: https://vault.centos.org/7.6.1810/isos/x86_64/
Linux 系统介绍
- Linux 是一种自由和开放源码的类 UNIX 操作系统。
- Linux 英文解释为 Linux is not Unix。
- Linux 是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
Linux VS Windows
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
Linux 系统启动过程
linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:
● 内核的引导。
● 运行 init。
● 系统初始化。
● 建立终端 。
● 用户登录系统。
init程序的类型:
● SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
● Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
● Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。
内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
运行init
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
运行级别
许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
● 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
● 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
● 运行级别2:多用户状态(没有NFS)
● 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
● 运行级别4:系统未使用,保留
● 运行级别5:X11控制台,登陆后进入图形GUI模式
● 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
系统初始化
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。
同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。
用户登录系统
一般来说,用户的登录方式有三种:
● (1)命令行登录
● (2)ssh登录
● (3)图形界面登录
对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。
而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。
Linux 的账号验证程序是 login,login 会接收 mingetty 传来的用户名作为用户名参数。
然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出。
这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。
/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
图形模式与文字模式的切换方式
Linux预设提供了六个命令窗口终端机让我们来登录。
默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。
如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。
当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。
如果你用的vmware 虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。
Linux 关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。
-
sync 将数据由内存同步到硬盘中。
-
shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
-
shutdown –h 10 ‘This server will shutdown after 10 mins’
这个命令告诉大家,计算机将在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
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。
关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。
shutdown命令
shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。
shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。
shutdown -p now ### 关闭机器
shutdown -H now ### 停止机器
shutdown -r 09:35 ### 在 09:35am 重启机器
要取消即将进行的关机,只要输入下面的命令:
shutdown -c
halt命令
halt 命令通知硬件来停止所有的 CPU 功能。但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。
halt ### 停止机器
halt -p ### 关闭机器、关闭电源
halt --reboot ### 重启机器
poweroff
poweroff 会发送一个 ACPI 信号来通知系统关机。
poweroff ### 关闭机器、关闭电源
poweroff --halt ### 停止机器
poweroff --reboot ### 重启机器
reboot
reboot 命令 reboot 通知系统重启。
reboot ### 重启机器
reboot --halt ### 停止机器
reboot -p ### 关闭机器
Linux常用操作指令
● ls 是最常见的目录操作命令,主要作用是显示目录下的内容
● cd是切换所在目录的命令
● pwd命令是查询所在目录的命令
● mkdir [选项] 目录名 创建文件夹
● rmdir命令删除空目录 ;rmdir命令的作用十分有限,只能删除空目录,一旦目录中有内容就会报错。所以一般不论删除的是文件还是目录,都会使用rm命令
1. 简单系统指令
2. Linux文件系统
1.Linux一切皆文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘
目录结构
文件含义
3. 文件管理指令
注意事项:命令区分大小写
1. 查看文件列表
ls [-参数1参数2] [目标文件夹]
# 查看当前目录下的文件列表
ls
# 查看指定目录下的文件
ls /
# 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
ls -l
# 查看隐藏文件
ls -a
# 参数并用
ls -la == ll //可以读取所以隐藏文件和详细信息
2. 切换目录
cd 目标文件夹
# 绝对路径切换
cd 绝对路径
# 绝对路径切换
cd 相对路径
# 例子:切换到/etc/sysconfig/networks-scripts 目录下
3. 查看当前命令所在的目录
pwd //查看当前路径
[root@centos7 network-scripts]# pwd
/etc/sysconfig/network-scripts
# 特殊目录符号
~ 当前用户的home目录
. 当前目录
.. 上一级目录
4. 新建文件夹和文件
# 在当前位置新建文件夹
mkdir 文件夹名
# 在指定目录位置,创建文件夹,并创建父文件夹
mkdir -p /a/b/文件夹名 //创建子文件夹
# 在当前目录下新建文件
touch 文件名
5. 删除文件
# 删除文件
rm 文件
# 删除文件夹
rm -r 文件夹
# 强制删除不询问
rm -rf 文件
6. 拷贝文件
# 拷贝文件
cp 原文件 新文件
# 拷贝文件夹
cp -r 源文件夹 新文件夹
7. 移动文件或修改文件名
# 移动源文件到目标文件夹中
mv 文件 文件夹
# 修改文件A的名字为文件B
mv 文件A 文件B
8. 获取文件的md5指纹(数字签名)
md5sum 文件名
# 简介
1. 数字签名,又称数字指纹
2. 可以验证文件是否被修改
3. 一个文件通过计算得到的一串字符串,文件内容的唯一标记(文件内容不变,指纹不会变)
文件被修改后,签名也会发生改变
4. 文本内容查看命令
- cat命令 : 查看文件中的全部信息(适合查看小文档)
- tac命令: 从文件的最后一行开始显示(tac是cat的倒着写)
- less命令 : 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
- tail命令 : 可以选择看文件的倒数几行
- head命令 :可以选择看文件的开头几行内容
- nl命令: 在显示内容的时候同时还会显示行数
可以使用 man [命令]来查看命令的使用文档
#查看文件中的全部信息(适合查看小文档)
cat 文件名
cat [-AbEnTv]
选项与参数:
● -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
● -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
● -E :将结尾的断行字节 $ 显示出来;
● -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
● -T :将 [tab] 按键以 ^I 显示出来;
● -v :列出一些看不出来的特殊字符
nl 文件名
显示行数
# 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
less 文件名
# 浏览模式快捷键
↑ #上一行
↓ #下一行
G #最后一页
g #第一页
空格 #下一页
/关键词 #搜索关键词
# 退出浏览模式,回到Linux命令行模式
q #退出
# 实时滚动显示文件的最后10行信息(默认10行)
tail -f 文件名
# 显示文件的最后20行信息
tail -n 20 文件名
tail -n -20 文件名
# 显示文件信息从第20行至文件末尾
tail -n +20 文件名
5. 文件查找
1. 文件名查找
需要管理员root权限才能查找
# 语法
find 搜索路径 -name "文件名关键词"
# 例子
find / -name "passwd"
find / -name "ifcfg-*"
2. 文件内容查找
# 语法
grep -参数 要查找的目录范围
# 参数
-n 显示查找结果所在行号
-R 递归查找目录下的所有文件
# 例子
grep aries /etc
grep aries /etc/passwd
6. 文件链接
1. Linux文件管理
● 模型图
● 说明
# 文件名
该文件的名字
# inode
该文件的元数据
# datablock
该文件真正保存的数据
文件名 -> 链接到 -> inode【元数据】->数据块【databolcks】(真正保存的数据)
注意:
1、inode中保存的是文件的元数据
2、ls命令查看的都是linux的元数据信息
3、数据块中才是文件的真正数据
2. 硬链接
命令
ln 源文件 硬链接文件
3. 软连接
ln -s 目标文件或文件夹 软连接名字
7. 系统管理
# 静态查看系统进程
ps -aux
# 实时查看系统进程
top
# 快捷键
↑ 下翻
↓ 上翻
q 退出
# 关闭进程
kill 进程id
# 强制关闭进程(谨慎使用)
kill -9 进程id
8. 输出
1. 覆盖输出
# 将命令1的执行结果,输出到后面的文件中。
`覆盖写入`
命令1 > 文件
# 例子
date > date.log
将日期加入到文件中,覆盖掉之前的内容
2. 追加输出
# 将命令1的执行结果,输出到后面的文件中。
`追加写入`
命令1 >> 文件
# 例子
date >> date.log
追加写入数据
9. 管道
# 语法,将命令1的输出结果,作为命令2的输入
命令1 | 命令2
# 例子
查找aries用户:cat /etc/passwd | grep -n “baizhi”
查找aries组:cat /etc/group | grep -n “baizhi”
查找sshd进程:ps -aux | grep sshd
10. 文件编辑
配置MobaXterm的默认文本编辑器
免去vim命令的麻烦
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
● chown (change owner) : 修改所属用户与组。
● chmod (change mode) : 修改用户的权限。
在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
● 当为 d 则是目录
● 当为 - 则是文件;
● 若是 l 则表示为链接文档(link file);
● 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
● 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。
更改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
● -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3、chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
● r:4
● w:2
● x:1
符号类型改变文件权限
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
● user:用户
● group:组
● others:其他
那么我们就可以使用 u, g, o 来代表三种身份的权限。
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
系统权限
Linux 用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
● 用户账号的添加、删除与修改。
● 用户口令的管理。
● 用户组的管理。
用户
- 用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
- 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
相关命令
1. 创建用户
`useradd -g 组名 用户名`
2. 设置密码
`passwd 用户名`
3. 查找系统账户
说明:系统每个用户信息保存在`/etc/passwd`文件中
4. 切换用户
`su 用户名`
5. 删除用户
`userdel -r 用户名`
6. 修改用户
`usermod 选项 用户名`
useradd 选项 用户名
参数说明:
● 选项:
○ -c comment 指定一段注释性描述。
○ -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
○ -g 用户组 指定用户所属的用户组。
○ -G 用户组,用户组 指定用户所属的附加组。
○ -s Shell文件 指定用户的登录Shell。
○ -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
● 用户名:指定新账号的登录名。
在删除组之前,要先将组内的用户名先删除。
用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
相关命令
1. 创建组
`groupadd 组名`
2. 删除组
`groupdel 组名`
3. 修改组
`groupmod 选项 用户组`
4. 查找系统中的组
`cat /etc/group | grep -n “组名”`
说明:系统每个组信息都会被存放在/etc/group的文件中
要在命令之前加上sudo
groupadd 选项 用户组
可以使用的选项有:
● -g GID 指定新用户组的组标识号(GID)。
● -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
groupmod 选项 用户组 //修改组
常用的选项有:
● -g GID 为用户组指定新的组标识号。
● -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
● -n新用户组 将用户组的名字改为新名字
groupmod –g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3。
权限
● linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。
权限含义
权限访问控制列表(ACL access controll list)
命令
● 查看权限
ls -la 文件
ll 文件
● 设置文件所有者
语法:chown [-R] user名:group名 文件名
参数:-R 如果是文件夹,需要使用这个参数,可以将文件夹及其内部所有文件的所有者和组全部修改
注意:命令权限需要root
## 修改文件所有者
chown 用户名 文件名
## 修改文件所属组
chown :组名 文件名
## 修改文件所有者和所属组
chown 用户名:组名 文件名
## 修改文件夹的所有者和所属组
chown [-R] 用户名:组名 文件夹
需要前面加上sudo,这里的sudo应该就是windows下的管理员运行。
● 权限设置1
语法:chmod u±rwx,g±rwx,o±rwx 文件名
运算符:
- 删除权限
+ 添加权限
= 赋值权限
## 给文件的所有者添加执行权限
chmod u+x 文件名
## 给文件的其他人删除所有权限
chmod o-rwx 文件名
## 给文件的所属组设置读写权限
chmod g=wx 文件名
● 权限设置2
# 文件的每个归属方的权限的值使用rwx之和计算出来的。
# 语法
`chmod [-R] nnn 文件`
-R 递归设置文件夹内所有文件
# 设置文件的权限为(所有者可读可写可执行,所属组可读可写,其他人可读)
chmod 764 文件名
与用户账号有关的系统文件
完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。
/etc/passwd文件
/etc/passwd文件是用户管理工作涉及的最重要的一个文件。
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
1)"用户名"是代表用户账号的字符串。
2)“口令”一些系统中,存放着加密后的用户口令字。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
4)“组标识号”字段记录的是用户所属的用户组。
5) “注释性描述”字段记录着用户的一些个人情况。
6) “主目录”,也就是用户的起始工作目录。
7) 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
8) 系统中有一类用户称为伪用户(pseudo users)。
系统软件管理
压缩解压缩
压缩语法: tar -zcvf 压缩后文件名 被压缩文件
解压缩语法 tar -zxvf 压缩文件名 -C 解压后文件所在目录
参数2:-C 指定解压后的文件存放的位置
rpm软件
简介:类似于windows中的.exe程序
1. 安装rpm软件
语法:`rpm -ivh xxx.rpm`
2. 查看系统中是否已安装的过该rpm软件
语法:`rpm -qa 软件名`
3. 卸载rpm软件
语法:`rpm -e 软件名`
4. 例子:安装tree工具
作用:查看某个目录下的文件信息
# 以树状结构查看2层文件信息
tree -L 2 要查看的路径
Linux服务
# 例如:sshd network firewalld 等
# 服务器管理命令
systemctl status 服务名
# 启动服务
systemctl start 服务名
# 重启服务
systemctl restart 服务名
# 停止服务
systemctl stop 服务名
# 禁止服务随linux启动。
systemctl disable 服务名
# 设置服务随linux启动。
systemctl enable 服务名
ip设置
服务名:network
[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.199.8" # 修改这里的ip地址即可
PREFIX="24"
GATEWAY="192.168.199.2"
DNS1="192.168.199.2"
DNS2="8.8.8.8"
IPV6_PRIVACY="no"
[root@centos7 dirnew]# systemctl restart network #重启网卡服务
防火墙
服务名:firewalld
# 开启防火墙
systemctl stop 服务名
# 临时关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld
主机名
# 查看主机名
hostname
# 设置主机名
hostnamectl set-hostname 主机名
ip映射
● 域名解析
● 本地hosts编辑
[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
192.168.199.8 centos7
SSH
# 远程登录linux
ssh 远程linux的ip或者映射域名
免密登录
# 简介
ssh登录远程linux,免去输入密码的麻烦
# 生成公钥和私钥
[root@centos7 ~]# ssh-keygen
------------执行结果-----------
[root@centos7 ~]# tree .ssh
.ssh
├── id_rsa # 私钥
├── id_rsa.pub # 公钥
└── known_hosts
# 发送公钥
`保存公钥的文件为/root/.ssh/authorized_keys`
[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys
# 发送公钥
[root@centos7 .ssh]# ssh-copy-id 目标主机的ip
远程拷贝
scp 本地的文件 root@远程linuxip:/远程linux的文件路径
scp -r 本地的目录 root@远程linuxip:/远程linux的文件路径
必要软件安装
- vim(vi编辑器增强版)
vim 文件
- wget(下载器)
wget url
- tree(目录树状显示)
# 以tree结构,递归显示当前文件下所有文件
tree
# 显示目标文件夹下的文件
tree 目标目录
- psmisc(高级进程管理工具)
# 以tree形式显示系统目前进程
pstree
# 杀死进程
killall 进程名
# 显示该文件被哪个进程使用
fuser /目标文件
Linux 磁盘管理
Linux 磁盘管理好坏直接关系到整个系统的性能问题。
Linux 磁盘管理常用三个命令为 df、du 和 fdisk。
● df(英文全称:disk free):列出文件系统的整体磁盘使用量
● du(英文全称:disk used):检查磁盘空间使用量
● fdisk:用于磁盘分区
df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
● -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
● -k :以 KBytes 的容量显示各文件系统;
● -m :以 MBytes 的容量显示各文件系统;
● -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
● -H :以 M=1000K 取代 M=1024K 的进位方式;
● -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
● -i :不用硬盘容量,而以 inode 的数量来显示
du
Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。
语法:
du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
fdisk
fdisk 是 Linux 的磁盘分区表操作工具。
fdisk [-l] 装置名称
选项与参数:
● -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
Linux yum命令
- yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
- 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum基于rpm实现的,提供了除了rpm的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。
yum [options] [command] [package ...]
● options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
● command:要进行的操作。
● package:安装的包名。
yum的安装
## 列出所有可以安装的软件包
yum list
## 安装软件
yum install -y 软件名
## 卸载软件
yum remove 软件名
## 查找软件包
yum search all 软件名
从网站上下载文件需要在网址之前加上 wget
wget + "网址"
wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
tar xvf yum-3.2.28.tar.gz
yum常用命令
● 1. 列出所有可更新的软件清单命令:yum check-update
● 2. 更新所有软件命令:yum update
● 3. 仅安装指定的软件命令:yum install <package_name>
● 4. 仅更新指定的软件命令:yum update <package_name>
● 5. 列出所有可安裝的软件清单命令:yum list
● 6. 删除软件包命令:yum remove <package_name>
● 7. 查找软件包命令:yum search <keyword>
● 8. 清除缓存命令:
○ yum clean packages
: 清除缓存目录下的软件包
○ yum clean headers
: 清除缓存目录下的 headers
○ yum clean oldheaders
: 清除缓存目录下旧的 headers
○ yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
:清除缓存目录下的软件包及旧的 headers
[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz 100% |=========================| 1.6 MB 00:05
filelists.xml.gz 100% |=========================| 138 kB 00:00
-> Finished Dependency Resolution
……(省略)
Linux apt命令
- apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
- apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt 命令执行需要超级管理员权限(root)。
apt [options] [command] [package ...]
● options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
● command:要进行的操作。
● package:安装的包名。
apt 常用命令
● 列出所有可更新的软件清单命令:sudo apt update
● 升级软件包:sudo apt upgrade列出可更新的软件包及版本信息:apt list --upgradeable升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
● 安装指定的软件命令:sudo apt install <package_name>安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
● 更新指定的软件命令:sudo apt update <package_name>
● 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
● 删除软件包命令:sudo apt remove <package_name>
● 清理不再使用的依赖和库文件: sudo apt autoremove
● 移除软件包及配置文件: sudo apt purge <package_name>
● 查找软件包命令: sudo apt search
● 列出所有已安装的包:apt list --installed
● 列出所有已安装的包的版本信息:apt list --all-versions
Linux vi/vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
什么是 vim?
Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (https://www.vim.org/) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
● i 切换到输入模式,以输入字符。
● x 删除当前光标所在处的字符。
● : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
● 字符按键以及Shift组合,输入字符
● ENTER,回车键,换行
● BACK SPACE,退格键,删除光标前一个字符
● DEL,删除键,删除光标后一个字符
● 方向键,在文本中移动光标
● HOME/END,移动光标到行首/行尾
● Page Up/Page Down,上/下翻页
● Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
● ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
● q 退出程序
● w 保存文件
按ESC键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
vi/vim 使用实例
使用 vi/vim 进入一般模式
如果你想要使用 vi 来建立一个名为 runoob.txt 的文件时,你可以这样做:
$ vim runoob.txt
直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!
按下 i 进入输入模式(也称为编辑模式),开始编辑文字
- 在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了!
- 在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。
- 这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。
按下 ESC 按钮回到一般模式
好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!
在一般模式中按下 :wq 储存后离开 vi
OK,我们要存档了,存盘并离开的指令很简单,输入 :wq 即可保存离开!
OK! 这样我们就成功创建了一个 runoob.txt 的文件。
Linux 下的C++开发
1. 基础运行环境
2. 小demo测试
1. 新建.c文件
touch 1.c
2. 写入程序
vim 1.c
输入之前要先输入i,进入输入模式。
输入完成之后,按 Esc 按键退出到一般模式,然后输入:wq,保存并退出。
3. 编译文件
gcc 2.c //编译2.c
这时候会自动编译生成一个a.out文件。
4. 输出结果
./a.out
好了,累死我了。学习完今天一天,精力满满!!!