这是我参与更文挑战的第13天,活动详情查看: 更文挑战
一、前言
本篇是作为一名Java后端开发必须掌握的Linux基础。分为
- Linux概述
- 基本的Linux命令
- 文件查看
- vim介绍
- 账号管理
- 用户组管理
- 磁盘管理
- 进程管理
- 软件的安装
二、Linux简介
2.1 概述
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2.2 发行版
目前,市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
2.3 Linux应用领域
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
2.4 进入Linux
在Linux的理念里面,一切皆文件。Linux文件系统从根目录开始,分为很多子目录:
- /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
- /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。(不要动)
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
- /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /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 :存放服务器相关的资源(自建)
三、Linux基本命令
3.1 命令格式
cmd [options] [arguments]
命令 选项 参数
3.2 通配符
Linux的通配符如下:
- *:代表匹配任何字符和任何数目的字符
- ?:代表匹配单一数目的任何字符
- [] : 匹配 [ ] 之内的任意一个字符
- [! ] : 表示非,匹配除了括号之内的任意一个字符
3.3 目录常用命令
3.3.1 ls 列出目录(颜色区分文件和文件夹)
- -a :查看全部的文件,包含隐藏文件
- -l : 列出所有的文件,包括文件的属性和权限, 不包含隐藏文件
- 所有的linux可以组合使用:
ls -al
复制代码
3.3.2 cd 切换目录
绝对路径都是以/ 开头,相对路径,对于当前目录该如何寻找 ../ 或./
3.3.3 pwd 显示当前所在目录
3.3.4 mkdir 创建文件夹
-
mkdir -p : 递归创建文件夹
mkdir -p test1/test2 复制代码
3.3.5 rmdir 删除目录
-
rmdir -p :删除层级目录
rmdir -p test1/test2/test3 复制代码
3.3.6 cp 复制文件或目录
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
复制代码
3.3.7 rm 文件或目录
- -f 就是force的意思,忽略不存在的文件,不会出现警告信息
- -i:互动模式,在删除前会询问使用者是否
- -r:递归删除,最常用的目录删除,很危险
3.3.8 移动文件或目录
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
复制代码
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
移动过程可以重命名:
[root@kuangshen home]# mv test mvtest
[root@kuangshen home]# ls
mvtest
复制代码
3.3.9 touch创建文件
3.4 查看文件内容
- cat 由第一行开始显示文件内容 cat也可以用清空文件内荣
cat /dev/null >nohup.out
# cat nohup.out
复制代码
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容(退出q)
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行 -n倒数第几行
3.5 基本属性
3.5.1 看懂文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。我们可以通过ls -l 的命令来查看
a、在Linux中的第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ – ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
b、在接下来的字符中,三个为一组,且均为【rwx】的三个参数的组合。这三个的位置不会改变,如果没有权限,就会出现减号【-】
- 【r】代表可读(read)
- 【w】代表可写(write)
- 【x】代表可以执行(execute)
三个一组,分为属主权限 , 属组权限,其他用户权限的含义是怎样的呢?
对于Linux来说,用户是按组分类的,一个用户属于一个或多个组。
- 属主权限:就是文件所有者的权限
- 属组权限:就是文件所有者同组的用户权限
- 其他用户权限:就是其他用户
3.5.2 修改文件属性
-
chgrp:更改文件属组
- chgrp 【-R】 属组名 文件名
- 如果加上-R的参数,那么该目录下的所有文件的属组都会更改
-
chown:更改文件属主,也可以同时更改文件属组。常用!
-
语法:
chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名 复制代码
-
-
chmod: 更改文件的9个属性。常用!
-
文件属性的设置方法分两种:一种是符号,一种是数字。
-
权限符号参照表:
- r:4
- w:2
- x:1
-
上面的每三种权限是可以对分数累加的,例如rwx=4+2+1 ;— = 0,因此,可以赋予权限chmod -R 770
-
对应字符:Linux用user,group,others代表三组权限,a代表所有。缩写表示u、g、o、a。分别修改权限:
[root@lei ~]# chmod u=rwx,g=rx,o=r test [root@lei ~]# ls -al test -rwxr-xr--. 1 root root 0 6月 12 14:08 test 复制代码
-
3.6 Linux 链接的概念
Linux的链接分为两种:硬链接、软链接。
- 硬链接:A->B,假设B是A的硬链接,那么他们两个指向了同一个文件,允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删。
- 软连接:类似windows下的快捷方式,删除了源文件,快捷方式也访问不了
四、Vim介绍
vim是操作Linux的必备技能,是从vi发展出来的一个文本编辑器。具备代码补完、编译及错误跳转等方便编程的功能,被广泛应用。
分为三种模式:
- 命令模式
- 输入模式
- 底线命令模式
4.1 命令模式
vim 进入编辑文件,
- 通过输入 i 进入输入模式
- 通过输入 : 进入底线命令模式
4.2 输入模式
输入模式就是我们开始编辑文件的模式,一些快捷键如下:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
4.3 底线命令模式
进入底线命令模式,基本命令有:
- q 退出程序
- w 保存程序
- 按esc 键可随时退出底线命令模式
五、账号管理
Linux 系统是一个多用户任务的分时操作系统,任何一个要使用系统资源的用户,就必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号可以分配不同的权限,保证系统的安全。
5.1 用户账户的管理
用户账号的管理工作主要涉及到用户的添加、修改与删除
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户名,用户组,主目录和登录Shell等资源
5.1.1 useradd :添加用户
useradd 选项 用户名
复制代码
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -m 使用者目录如不存在则自动建立。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
5.1.2 userdel 删除用户
userdel 选项 用户名
复制代码
删除用户就是从/etc/passwd 等系统文件中的该用户记录删除,必要时还删除用户的主目录
常用的命令就是-r。它的作用就是把用户的主目录一起删除。
5.1.3 usermod 修改用户,修改完看配置文件
修改用户,更改用户属性,如用户名、主目录、用户组、登录shell等
usermod 选项 用户名
复制代码
-
-a|–append ##把用户追加到某些组中,仅与-G选项一起使用
-
-c|–comment ##修改/etc/passwd文件第五段comment
-
-d|–home ##修改用户的家目录通常和-m选项一起使用
-
-e|–expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-
-f|–inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
-
-g|–gid ##修改用户的gid,改组一定存在
-
-G|–groups ##把用户追加到某些组中,仅与-a选项一起使用
-
-l|–login ##修改用户的登录名称
-
-L|–lock ##锁定用户的密码
-
-m|–move-home ##修改用户的家目录通常和-d选项一起使用
-
-s|–shell ##修改用户的shell
-
-u|–uid ##修改用户的uid,该uid必须唯一
-
-U|–unlock ##解锁用户的密码
5.1.4 切换用户
- 1.切换用户的命令为:su username 【username是你的用户名哦】
- 2.从普通用户切换到root用户,还可以使用命令:sudo su
- 3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
- 4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su – root】
- $表示普通用户
- #表示超级用户,也就是root用户
5.1.5 修改用户密码
passwd 用户名
复制代码
六、用户组管理
每个用户都有一个用户组,系统可以对一个用户的所有用户进行集中管理(开发、运维、测试、root)。不同Linux系统对用户组的规定有所不同,如linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
组的增加、删除和修改实际上就是对/etc/group文件的更新
6.1 创建用户组 groupadd
通过groupadd 组名 完成组的创建,创建完用户组就可以得到一个id。
cat /etc/group
复制代码
groupadd -g 数字:若不指定就是自增1
6.2 删除用户组groupdel 用户组
6.3 修改用户组的权限信息和名字 groupmod
groupmod 选项 用户组
复制代码
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
七、磁盘管理
df(列出文件系统整体的磁盘使用量)
du(检查磁盘空间使用量)
****
八、进程管理
文件,权限。系统
对于我们开发人员来说,其实Linux更多偏向于使用而已。
在Linux中,每个程序都是有自己的进程,每个进程都有一个id号。
每一个进程,都会有一个父进程。
一般的服务都是后台进行的,基本的程序都是前台运行的。
ps 查看系统中正在执行的各种进程信息
ps -xx:
- – a:显示当前终端运行的所有的进程信息(当前进程)
- -u :以用户的信息显示进程
- -x:显示后台运行进程的参数
ps -aux 查看所有的进程
ps -aux |grep mysql
ps -aux |grep redis
ps -aux |grep java
# 在linux中这个叫做管道符 A|B
grep:查找文件中符合条件的字符串
复制代码
ps -ef |grep mysql #看父进程一般通过目录树查看
pstree
-p:显示id
-u:显示用户组
复制代码
结束进程: kill -9 进程的id (死循环才会杀进程)
九、centos软件安装
1、jdk
2、node.js
3、Nginx
4、redis6