一、Linux系统概述
1、开机
开机会启动许多程序,它们在Windows叫做“服务”(service),在Linux就叫做“守护线程”(daemon)。
一般来说,用户登录的方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
2、关机
在Linux领域内大多数用在服务器上,很少遇到关机操作,毕竟服务器上跑着一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为:shutdown
;
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
总结一下:不管是重启还是关机,首先要运行sync命令,把内存中的数据写入到磁盘中。
最高权限账户为root,可以操作一切。
3、系统目录结构
登录系统后,在当前命令窗口下输入命令:ls /
运行后如图所示:
以下是对这些目录的解释:
- /bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
- /boot:这里存放的是启动Linux时使用的核心文件,包括一些连接文件以及镜像文件。(不要乱动)
- /dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/ect:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每一个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放的系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
- /lost + found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放突然关机的一些文件)
- /media:Linux系统会自动识别一些设备,例如U盘,光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。(后面会把一些本地文件挂载在这个目录下)
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认为空。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称为超级权限者的用户主目录。
- /sbin:s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /svr:该目录存放着一些服务启动之后需要提取的数据。
- /sys:这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs。
/tmp:这个目录是用来存放一些临时文件的,用完就丢的文件可以放在这个目录下
- /usr:它是user resourece的缩写,这是一个非常重要的目录,用户的很多程序和文件都放在这个目录里,类似windows下的program files目录。
- /usr/bin:系统用户使用的应用程序。
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护线程。Super
- /usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删除掉或清除。
/www:存放服务器网站相关的资源,环境,网站的项目
二、常用的基本命令(必会)
ifconfig
命令:查看ip地址相关信息
网络配置文件的位置:cd/etc/sysconfig/network-scripts/ifcfg-ens33
1、目录管理
-
ls
(列出目录)
-a
参数:all,查看全部的文件,包括隐藏文件
-l
参数:列出所有的文件,包含文件的属性和权限,没有隐藏文件
所有的Linux可以组合使用!(如:ls -al
)
ls -l
的命令可以简写为:ll
-
cd
(切换目录)
使用: cd 目录名
(绝对路径都是以/
开头)
特殊说明:
~
表示:普通用户的home目录
.
表示: 目前所在的目录
..
表示: 目前目录位置的上级目录
pwd
(显示当前用户所在的目录)mkdir
(创建一个目录)
使用: mkdir [-p] dirName
说明:
-p
参数:通过此选项,可以实现多层目录同时创建
rmdir
(删除目录)
[root@Aug test3]# cd /home
[root@Aug home]# ls
aug aug_ test1 test2
[root@Aug home]# rmdir test1 # 删除目录test1
[root@Aug home]# ls
aug aug_ test2
[root@Aug home]# rmdir test2 # 删除目录test2 因为下存在其他目录所以删除失败
rmdir: 删除 "test2" 失败: 目录非空
[root@Aug home]# rmdir -p test2
rmdir: 删除 "test2" 失败: 目录非空
[root@Aug home]# rmdir -p test2/test3/test4 # 必须加上-p参数以及目录层级才可执行成功
注意: rmdir仅能删除空的目录,如果下面存在文件,需要先删除文件;
递归删除多个目录则加 -p 参数即可。
cp
(复制文件或者目录)
使用: cp -r 原来的地方 新的地方
说明:
-r
参数:如果复制的是目录需要使用此选项,其将复制该目录下所有的子目录和文件
cp -r hello/ ./world 将hello目录和目录下的所有文件复制到world目录下
cp -r hello/* ./world 将hello目录下所有文件复制到world目录下
[root@Aug home]# ls
aug aug_ install.sh
[root@Aug home]# cp install.sh aug # 拷贝文件至目录
[root@Aug home]# ls
aug aug_ install.sh
[root@Aug home]# cd aug
[root@Aug aug]# ls
install.sh
[root@Aug aug]# cd ..
[root@Aug home]# cp install.sh aug # 如果文件重复,就选择覆盖或者放弃(y/n)
cp:是否覆盖"aug/install.sh"? y
[root@Aug home]#
7.rm
(移除文件或者目录)
-f
: 忽略不存在的文件,不会出现警告,强制删除
-r
: 递归删除目录
-i
: 互动,删除询问是否删除
注意命令:
rm -rf /
【系统中所有文件就被删除了, 删库跑路就是这样!】
[root@Aug aug]# ls
install.sh
[root@Aug aug]# rm -rf install.sh
[root@Aug aug]# ls
[root@Aug aug]#
mv
( 移动文件 或者 移动目录 或者 重命名文件)
使用: mv 源文件 目标
-f
: 强制移动
-u
: 只替换已经更新过的文件
[root@Aug home]# ls
aug aug_ install.sh
[root@Aug home]# mv install.sh aug/ # 移动文件
[root@Aug home]# ls
aug aug_
[root@Aug home]# cd aug
[root@Aug aug]# ls
install.sh
[root@Aug aug]# cd ..
[root@Aug home]# ls
aug aug_
[root@Aug home]# mv aug Yang # 重命名文件夹
[root@Aug home]# ls
aug_ Yang
--------------------
举例:
mv hello.txt hi.txt 将hello.txt改名为hi.txt
mv hi.txt hello/ 将文件hi.txt移动到hello目录中
mv hello/ world/ 如果hello目录不存在,将hello目录改名为world
mv hello/ world/ 如果hello目录存在,将hello移动到world目录中
tar
(打包解包压缩解压命令)
作用:对文件进行打包、解包、压缩、解压
使用:tar [-zxcvf] fileName [files]
包文件后缀名 .tar表示只是完成了打包,并没有压缩
包文件后最为.tar.gz表示打包的同时还进行了压缩
说明:
-z
:z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
-c
:c代表的是create,即创建新的包文件
-x
:x代表的是extract,实现从包文件中还原文件
-v
:v代表的是verbose,显示命令的执行过程
-f
:f代表的是file,用于指定包文件的名称
常用命令:
tar -cvf
打包tar -zcvf
打包压缩tar -xvf
解包tar -zxvf
解压
举例:
打包
tar -cvf hello.tar ./* 将当前目录下所有文件打包,打包后的文件名为hello.tar
tar -zcvf hello.tar.gz ./* 将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
-----------------
解包
tar -xvf hello.tar 将hello.tar文件进行解包,并将解包后的文件放在当前目录
tar -zxvf hello.tar.gz 将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
tar -zxvf hello.tar.gz -C /usr/local 将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录
find
,grep
(查找命令)
find
命令作用:在指定目录下查找文件
使用:find dirName [-option] fileName
grep
命令作用:从指定文件中查找指定的文本内容
使用:grep word fileName
举例:
find . -name “*.java” 在当前目录及其子目录下查找.java结尾文件
find /itcast -name “.java” 在/itcast目录及其子目录下查找.java结尾的文件
-----------------------------------------
举例:
grep Hello HelloWorld.java 查找HelloWorld.java文件中出现的Hello字符串的位置
grep hello *.java 查找当前目录中所有.java结尾的文件中包含hello字符串的位置
touch
(创建文件)
使用: touch [文件名]
注意: 如果文件不存在,新建文件
- 在执行Linux命令时,提示信息如果为乱码,这是由于编码形式导致的,
需要修改Linux的编码,输入如下命令:
echo 'LANG="en_US.UTF-8" ' >> /etc/profile 将编码信息写入/etc/profile配置文件中
source /etc/profile 执行此命令,让更改后的配置文件生效
- Tab键自动补全
- 连续两次Tab键,会给出操作提示
- 使用上下箭头快速调出曾经使用过的命令
- 使用clear命令或者ctrl+l的快捷键快速清屏
2、文件的基本属性
十个字母
- 看懂文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保证系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用 ll
或者ls -l
命令来显示一个文件的属性以及文件所属的用户和组信息,如 :
在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
:更改文件属组(change group)
使用:
chgrp [-R] 属性名 文件名
-R
参数: 递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、chown
:更改文件属主(change owner)
使用:
chown [-R] 属性名 文件名
3、chmod
:更改文件9个属性(必须要掌握
)
使用:
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字(常用),一种是字符。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
文件的权限字符:【-rwx rwx rwx】,这九个权限三个三个一组。
我们也可使用数字来代表各个权限,每个字符的对应数字如下:
r:4
w:2
x:1
例如:可读可写不可执行的权限:
若用字符表示: rw-
若用数字表示: 6
例如:可读可写可执行权限
若用字符表示: rwx
若用数字表示: 7
例如:赋予所有用户可读可执行的权限
命令可表示为: chmod 777 文件名
每种身份(owner/group/others)各自的三个权限(r/w/x)的数字是需要累加的,
例如当权限为:rwxrwx- - -
,其数字的分数是:
owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = - - - = 0 + 0 + 0 = 0
linux命令表示为:
chmod 770 filename
- 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
cat
: 由第一行开始显示文件内容,用来读文章,获取读取配置文件都使用cat命令
cat -n
: 由1开始对所有输出的行号编号
tac
: 从最后一行开始显示,可以看出tac是cat的倒着写!
nl
: 显示的时候,顺道输出行号!看代码的时候希望显示行号!(常用)
more
: 一页一页的显示文件内容(空格代表翻页,enter代表向下看一行)
当键盘按下: q
或者Ctrl + c
退出more命令。
less
: less和more类似,但是比more更好的是,他可以往前翻页!
(空格下翻页,上下键代表翻动页面!q
是退出命令,查找字符串/要查询字符,向上查询使用?+要查询的字符串
,向下查询使用/+要查询的字符串
, n
继续搜寻下一个,N
向上寻找!)
head
: 只看头几行(通过-n参数来控制显示几行,如: head -n 20
)
tail
: 只看尾巴几行
tail [-f] fileName
: -f 动态读取文件末尾内容并显示,通常用于日志文件的内容输出
你可以用man [linux命令]
来查看各个命令的使用文档,如:man cp
。
拓展:Linux链接的概念
Linux的链接分为两种:硬链接、软链接
硬链接: A----B;假设B是A的硬链接,那么他们两个指向同一个文件!允许一文件拥有多个 路径,用户可以通过这种机制来建立硬链接到一些重要文件上,防止误删!
软链接: 类似windows下的快捷方式,删除的源文件,快捷方式也访问不了!
创建链接的linux命令: ln
echo命令
: 在当前屏幕输出/打印字符串,也可以将输出内容输入到某个文件中
[root@Aug home]# touch f1 # 创建一个f1文件
[root@Aug home]# ls
aug_ f1 Yang
[root@Aug home]# ln f2 # 不加参数默认创建一个硬链接 f2
ln: failed to access "f2": 没有那个文件或目录
[root@Aug home]# ln f1 f2
[root@Aug home]# ls
aug_ f1 f2 Yang
[root@Aug home]# ln -s f1 f3 # 加-s参数,则创建一个软链接(符号链接) f3
[root@Aug home]# ls
aug_ f1 f2 f3 Yang
[root@Aug home]# echo "i love dddd " >> f1 # 向f1文件中写入一些字符串
[root@Aug home]# ll
总用量 12
drwx------. 15 aug_ aug_ 4096 4月 25 20:43 aug_
-rw-r--r--. 2 root root 13 4月 26 14:13 f1
-rw-r--r--. 2 root root 13 4月 26 14:13 f2
lrwxrwxrwx. 1 root root 2 4月 26 14:12 f3 -> f1
drwx-wx-wx. 2 root root 24 4月 26 11:19 Yang
[root@Aug home]# cat f1 # 查看f1
i love dddd
[root@Aug home]# cat f2 # 查看f2
i love dddd
[root@Aug home]# cat f3 # 查看f3
i love dddd
删除f1之后 查看 f2 和 f3的区别:
[root@Aug home]# rm -rf f1
[root@Aug home]# ll
总用量 8
drwx------. 15 aug_ aug_ 4096 4月 25 20:43 aug_
-rw-r--r--. 1 root root 13 4月 26 14:13 f2
lrwxrwxrwx. 1 root root 2 4月 26 14:12 f3 -> f1
drwx-wx-wx. 2 root root 24 4月 26 11:19 Yang
[root@Aug home]# cat f2 # f2 硬链接还在
i love dddd
[root@Aug home]# cat f3 # f3(软链接、符号链接)快捷方式失效!
cat: f3: 没有那个文件或目录
3. Vim编辑器
要使用vim命令,需要我们自己安装,使用命令: yum install vim
说明:
1、在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在,则新建文件。
2、vim在进行文本编辑时共分为三种模式,分别为命令模式,插入模式和底线模式。
这三种模式之间可以相互切换。
我们在使用vim时一定要注意我们当前所处的是哪种模式。
3、vim可以通过一些插件可以实现和IDE一样的功能!
4、Vim是从Vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛的使用。
尤其是Linux中,必须要会使用Vim (查看内容,编辑内容,保存内容!)
5、vi是老式的字处理器,不过功能已经很齐全了,但是还是有很多可以进步的地方。
Vim则是程序开发者的一项很好用的工具。
所有的Unix Like系统都会内建vi文本编辑器,其它的文本编辑器则不一定会存在。
2.三种使用模式
基本上vi/vim共分为三种模式,分别为命令模式(Command mde),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i
: 切换到输入模式,以输入字符。
x
: 删除当前光标所在的字符。
:
: 切换到底线命令模式,以在最后一行输入命令。
若想要编辑文本:启动Vim,进入命令模式,按下i
,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
命令模式下可以查看文件内容,移动光标(上下左右箭头、g
【开头】、G
【末尾】)
通过vim命令打开文件后,默认进入命令模式
另外两种模式需要首先进入命令模式,才能进入彼此
输入模式:
在命令模式下按下下[i,a,o
]任意一个就进入了输入模式。
例如:
在命名模式下按i
,可以进入输入模式,进入输入模式后,下方会出现【insert
】
在输入模式下按下Esc
键,回到命令模式
在输入模式下,可以进行以下操作:
1.可以直接输入字符
2.Enter
,回车键,换行
3.BACK SPACE
,退格键,删除光标前一个字符
4.DEL
,删除键,删除光标后一个字符
5.方向键
,在文本中移动光标
6.HOME/END
,移动光标到行首/行尾
7.Page Up / Page Down
,上/下翻页
8.Insert
,切换光标为输入/替换模式(切换字符输入的模式)
9.ESC
,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下[:,/]任意一个
就进入了底线命令模式。
光标就移动到了最底下,就可以在这里输入一些底线命令了!
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有: :wq(保存并退出)
底线模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
通过/
方式进入底线模式后再输入字符串,可以对文件内容进行向下查找
通过:
方式进入底线模式后,可以再输入wq(代表保存并退出)
,q!(代表不保存退出)
、
set nu(显示行号)
等等。
其中:
q
:代表退出程序
w
: 代表保存文件
按ESC键
: 可随时退出底线命令模式。
可以将这三种模式想成底下的图标来表示:
- Vim按键详细说明
参考学习的链接: 点击进入
4. 账号管理
一般在公司中,用的都不是root账户
1.简介
Linux系统是一个多用户多任务的分时操作系统, 任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行追踪,并控制它们对系统资源的访问,另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改
- 用户口令的管理
- 用户组的管理
2.用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户好、用户组、主目录和登录Shell等资源。
3.useradd 命令
(添加用户)
使用: useradd -选项 用户名
[root@Aug home]# useradd -m AstheWind # 创建一个用户!
[root@Aug home]# ls
AstheWind aug_ Yang
Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了!
如写入文件: /etc/passwd
选项说明
-m
:自动创建这个用户的主目录/home/aug
-c
: comment 指定一段注释性描述
-d
:目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g
:用户组 指定用户所属的用户组。
-G
:用户组 用户组指定用户所属的附加组。
-m
:使用者目录如不存在则自动建立。
-s
:Shell文件,指定用户的登录Shell。
-u
:用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
4.userdel命令
(删除用户)
如果一个账号不再使用,可以从系统中删除。
删除用户就是将etc/passwd等系统文件中该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel命令,
使用: userdel 选项 用户名
常用的选项是-r
,它的作用是把用户的主目录一起删除。
如: userdel -r carson
: 删除用户的时候将它的目录也一并删掉
[root@Aug home]# ls
AstheWind aug_ Yang
[root@Aug home]# userdel -r AstheWind
[root@Aug home]# ls
aug_ Yang
[root@Aug home]#
5.usermod命令
(修改用户)
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
其使用格式如下:usermod 选项 用户名
其常用的选项有-c
, -d
, -m
, -g
, -G
, -s
, -u
以及 -o
等,这些选项的意义与useradd命令中的选项一样,可以为用户指定范围新的资源值。
[root@Aug home]# usermod -d /home/233 wind
6.su命令
(切换用户)
切换用户的一般命令格式为:su username
特别的: 从普通用户切换到root用户,还可以使用命令:sudo su
在终端输入exit
或logout
或使用快捷方式ctrl + d
,可以退回到原来的用户。
在切换用户时,如果想在切换用户之后顺便切换使用新用户的工作环境,可以在su和username之间
加 -
,例如 【su - root
】
$符号
: 表示普通用户
#符号
: 表示超级用户,也就是root用户
如果购买服务器后,主机名是一个随机字符串,也可以通过linux命令修改主机名,如下:
7.用户的密码设置问题
一般通过root创建用户的时候!后面要用passwd命令
再为这个用户配置密码!
Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题.
在公司中,一般拿不到公司的服务器的root权限,都是一些分配的账号.
如果是超级用户的话:
passwd username:
new password:
re password:
如果是普通用户:
passwd
(current) UNIX password:
new password: # 密码不能太简单!
re password:
8.锁定某个账户
比如张三辞职了!冻结账号,一旦冻结,这个人就登录不上系统了!
passwd -l wind # 对应lock的缩写,锁定之后这个用户就不能登录了!
passwd -u wind # 对应unlock的缩写,就解锁这个用户了
passwd -d wind # 没有密码也不能 登录!
在公司中你一般触及不到root用户!作为一个开发拿不到!
9.用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。
不同Linux系统对用户的规定有所不同。
用户组的管理涉及用户组的添加、删除和修改。
用户组的增加、删除和修改实际上就是对/etc/group文件
的更新。
创建一个用户组: groupadd命令
创建完用户组后可以得到一个组的id,这个id是可以指定的!如:-g 520
如果不指定就是自增1.
删除一个用户组: groupdel命令
修改用户组的权限信息和名字: groupmod -g -n 命令
切换用户组:newgrp命令
# 若登录当前用户 wind,要切换到root用户组的话
$ newgrp root
10.拓展:系统文件的查看
完成用户管理的工作有很多种方法,但是每一种方法实际上都是对有关系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd,/etc/shadow,/etc/group等
。
下面分别介绍这些文件的内容:
/etc/passwd文件是用户管理工作涉及的最重要的一个文件
Linux系统中的每个用户都在 /etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
[root@Aug /]# cat etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
从上可以看到,/etc/passwd
中一行记录对应着一个用户,每行记录又被冒号(:)
分割为7个字段,可以看出这个用户的主目录在哪里,可以看到属于哪一个组,其格式和具体含义如下:
用户名:口令(登录密码,不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
至于: /etc/shadow/文件
:
由于/etc/passwd文件
是所有用户可读的,如果用户的密码太过简单或规律比较明显的话,一台普通的计算机就能很容易的将他破解,因此对安全性能要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件夹中,这个文件是/etc/shadow文件
。
只有超级用户才拥有该文件的读权限,这保证了用户密码的安全性。
它的文件格式与/etc/passwd类似
,有若干个字段组成,字段之间用“:”
隔开,这些字段是:
登录名 加密口令 最后一次修改时间 最小时间间隔 最大时间间隔 警告时间 不活动时间 失败时间 标志
至于: /etc/group文件
用户组的所有信息都放在/etc/group文件
中。
5.磁盘管理
df命令
:(列出文件系统整体的磁盘使用量)
du命令
:(检查磁盘空间使用量)
2.挂载 :mount命令
卸载 :umount -f [挂仔位置]
6.进程管理
Linux中一切皆文件
文件:读写执行(查看,创建,删除,移动,编辑,复制),
权限(用户、用户组)
系统:(磁盘,进程)
1.基本概念
在Linux中,每一个程序都有一个自己的一个进程,每一个进程都有一个id号。
每一个进程,都会有一个父进程。
进程可以有两种存在方式:前台,后台
一般的话服务都是后台运行的,基本的程序都是在前台运行
的
2.命令
top命令
: 查看实时的动态的正在运行的进程信息
ps命令
: 查看当前系统中某个快照瞬间各种进程的静态信息.
使用: ps -xx
-a
显示当前终端运行的所有进程信息(当前进程的一个)
-u
以用户的信息显示进程
-x
显示后台运行进程的参数!
ps -aux
: 查看所有的进程
# ps -aux 查看所有的进程
ps -aux|grep mysql
ps -aux|grep redis
# | 在Linux中这个叫做管道服务 A |B,将A的输出作为B的输入
# grep 查找文件中符合条件的字符!
ps-xx|grep
: 过滤进程信息
ps-ef
:可以查看到父进程的信息
ps -ef|grep mysql #进程信息中过滤出mysql的进程信息
# 看父进程我们一般可以通过目录树结构来查看
pstree -pu
-p 显示父 id
-u 显示当前用户组
结束进程:kill -9 进程的id
kill -9 进程的id #表示强制结束该进程
三、环境安装
Linux系统软件安装的方式
- 源码编译安装
软件以源码工程的形式发布,需要自己编译打包 - rpm
软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题 - 解压缩安装(tomcat)
软件已经针对具体平台编译打包发布,只要解压,修改配置即可 - yum在线安装
一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
1、JDK安装(rpm方式安装示例)
开发Java的必要的环境!
- 去官网下载JDK rpm文件。
- 安装Java环境
# 检测当前系统是否存在java环境
java -version
# 查询当前系统中安装的所有软件
rpm -qa
# 如果有的话就需要卸载
rpm -qa|grep jdk # 过滤出,检查JDK的版本信息
rpm -e --nodeps jkd8 # 卸载
# 卸载完毕即可安装我们下载的Jdk 的rpm包,执行如下命令:
rpm -ivk rpm包
- 系统配置文件中配置环境变量,即编辑
/etc/profile文件
export JAVA_HOME=/usr/java/jdk-11.0.2
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
- 让这个配置文件生效:
source /etc/profile
- 检查安装是否成功
java -version
2、TomCat安装(解压缩方式安装示例)
ssm框架中的 war包 就需要放到tomcat的webapp目录中才能运行了!
- 官网下载TomCat的
tar.gz格式
的文件。 - 解压这个文件
tar -zxvf apache-tomcat-10.0.20.tar.gz
-
启动tomcat! 进入所在目录后,输入
./startup.sh
,脚本即可运行启动:
在windows系统中,脚本对应的是bat后缀格式
在linux系统中,脚本对应的是.sh
后缀格式。
-
查看TomCat启动是否成功,有多种方式:
- 查看启动日志
more /usr/local/apache-tomcat-10.0.20/logs/catalina.out
tail -50 /usr/local/apache-tomcat-10.0.20/logs/catalina.out
- 查看进程
ps -ef | grep tomcat
注意:
ps命令
是linux下非常强大的的进程查看命令,通过ps-ef可以查看当前运行的所有进程的详细信息|
在Linux中称为管道,可以将前一个命令的结果输出给后一个命令作为输入- 使用
ps命令
查看进程时,经常配合管道符和查找命令grep
一起使用,查看特定的进程
- 停止tomcat服务的方式
- 运行Tomcat的bin目录下的停止服务的脚本文件
shutdown.sh
- 结束Tomcat进程
查看Tomcat进程,获取进程id,然后kill掉.
补充:防火墙相关命令知识
# 查看firewall服务状态
systemctl status firewalld、firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开启、重启、关闭firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
# 查看全部信息
firewall-cmd --list-all
# 只看端口信息
firewall-cmd --list-ports
# 开启端口
开启端口命令:firewall-cmd --zone=public --add-port=80/tcp --
permanent
# 开启端口,如果是云服务器,还要注意在上面的安全组中开启相应的端口
开启端口命令:firewall-cmd --zone=public --remove-port=80/tcp --
permanent
#立即生效
firewall-cmd --reload
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone # 作用域
--add-port=80/tcp # 添加端口,格式为:端口/通讯协议
--permanent # 永久生效,没有此参数重启后失效
注意:
1、systemctl
是管理linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
2、firewall-cmd
是linux中专门用于控制防火墙的命令
3、为了保证系统安全,服务器的防火墙不建议关闭。
3、Docker安装(以yum在线安装示例)
官网安装手册:Docker官网
在Linux下执行,一定要联网,yum在线安装。
使用命令格式:yum install -y 相应的yum的源链接
- 检测CentOS7
[root@Aug bin]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
yum list docker 搜索docker安装包
- 安装准备环境
yum -y install 包名 # yum install 在线安装命令 -y 所有的提示都为y
yum -y install gcc
yum -y install gcc-c++
- 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装yum-utils包(提供yum-config-manager 实用程序)
yum install -y yum-utils
- 设置stable镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
- 启动docker
systemctl start docker
- 测试
docker version
docker run hello-world
docker images
四、SpringBoot项目部署到linux
- 在IDEA中开发SpringBoot项目并打成jar包
即利用maven命令工具的package命令即可,其会自动在target目录中生成项目的jar包。
- 将jar包上传到Linux服务器,通过
finalshell
或者xftp
软件来上传文件。
mkdir /usr/local/app 创建目录,将项目jar包放到此目录
- 启动SpringBoot项目
java -jar jar包名
nohup命令
:改为后台运行SpringBoot程序,并将日志输出到日志文件
其有如下优点:
- 线上程序不会采用霸屏的形式运行程序,而是将程序后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup命令:英文全称no hang up (不挂起) ,用于不挂断地运行指定命令,退出终端不会影响程序的运行。
语法格式: nohup Command [Arg...][&]
参数说明:Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让程序在后台运行
举例:(后台运行java -jar命令,并将日志输出到hello.log文件)
nohup java -jar boot工程.jar &> hello.log &
- 停止SpringBoot程序
# 查看项目运行进程
ps -ef | grep boot项目.jar
# 杀死进程
kill -9 进程号
创作不易,感谢观看,欢迎点赞评论!!