目录
走进Linux
- 关机指令为:shutdown
sync # 将数据由内存同步到硬盘中
shutdown # 关机指令
shutdown -h 10 # 计算机将在10分钟后关机
shutdown -h now # 立刻关机
shutdown -h 20:25 # 在固定时间关机
shutdown -h +10 # 计算机将在10分钟后关机
shutdown -r now # 系统立刻重启
shutdown -r +10 # 系统10分钟后重启
reboot # 立即重启,等同于shutdown -r now
halt # 关闭系统,等同于shutdown -h now 或 poweroff
- 注意:不论要重启还是关闭系统,首先要运行sync命令,把内存中的数据写入磁盘
系统目录结构
-
一切皆文件
-
根目录/,所有的文件都挂载在这个节点下
登录系统后,在当前命令窗口下输入命令:
ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
以下是对这些目录的解释:
- /bin:bin是Binary的缩写,存放着最经常使用的命令
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
- /etc:用来存放所有的系统管理所需要的配置文件和目录
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
- /lib:存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件
- /media:Linux会自动识别一些设备,例如U盘,光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt上,然后进入该目录就可以查看光驱里的内容了。(我们后面会把一些本地文件挂载在这个目录下)
- /opt:这是给主机额外安装软件所摆放的目录。比如一个ORACLE数据库就可以放到这个目录下
- /proc:这是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
- /root:该目录为系统管理员,也称作超级权限者的用户主目录
- /run:是一个临时的文件系统,存储系统启动以来的信息,当系统重启时,这个目录下的文件就会被删除掉
- /sbin:s就是Super的意思,这里存放的是系统管理员使用的系统管理程序
- /srv:存放一些服务启动之后需要提取的数据
- /sys:这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp:用来存放一些临时文件,用完即丢的文件,可以放在这个目录下,如安装包
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
- /var:存放着在不断扩充的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件
常用命令
目录管理
cd
绝对路径与相对路径
绝对路径是路径的全称:C:\ProgramData\mysql\xxx.xx
相对路径:比如当前在mysql目录下,那么xxx.xx文件,对应我们的相对配置就是/xxx.xx
- cd:切换目录命令,change directory
- cd …:返回上一级目录
- cd /:切换至根目录
ls
- ls:列出目录(经常使用),list
选项
- -a:查看全部的文件,包括隐藏文件
- -l:列出所有的文件,包含文件的属性和权限
- -h:人性化显示文件大小
- ‘ls -l’ 可以简写成 ll
pwd
- pwd:显示当前所在的目录,print working directory
mkdir
- mkdir:在当前目录下创建一个新目录,make directories
选项:
- -p:递归创建(mkdir -p test1/test2/test3)
rm、rmdir
- rmdir:删除空目录,remove directory(不太重要)
选项:
-
-p:递归删除
-
rm [目录或文件]:删除文件或目录(重要)
选项:
- -r:删除目录
- -f:强制
- -i:询问是否删除
cp
- cp [选项] [原文件或目录] [目标目录]:复制文件或目录,copy
选项:
-
-r:递归复制目录
-
-p:连带文件属性复制
-
-d:若源文件是链接文件,则复制链接属性
-
-a:相当于 -rpd
cp huangyue/apache-tomcat-9.0.43.tar.gz test/
mv
- mv [选项] [原文件或目录] [目标目录]:移动文件或目录,move
选项:
- -f:强制
- -u:只替换已经更新过的文件
mv huangyue/apache-tomcat-9.0.43.tar.gz test/
也可以用于重命名文件或目录:
文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll
或者ls –l
命令来显示一个文件的属性以及文件所属的用户和组,如:
第一个字母代表文件类型:-(文件)、l(链接,相当于快捷方式,会指向一个路径)、d(目录)
剩下的9位将每3个为1组,分别代表所属用户的权限、所属组的权限、其他用户的权限。
- [ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
-r:递归更改文件属组,就是在更改某个文件目录的属组时,如果加上-r参数,那么该目录下的所有文件都会被更改
chown
更改属主,change owner
- chown [选项] 属主名 文件名:更改文件属主
- chown [选项] 属主名:属组名 文件名:同时更改文件的属主和属组
chgrp
更改属组,change group
- chgrp [选项] 属组名 文件名:更改文件属组
chmod
更改文件9个属性**(必须掌握)**,change mode
工作中很多情况下会出现:你没有权限操作此文件
chmod [-r] xxx 文件或目录
Linux文件属性有两种设置方法,一种是数字(常用),一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—] 分数则是:
-
owner = rwx = 4+2+1 = 7
-
group = rwx = 4+2+1 = 7
-
others= — = 0+0+0 = 0
因此可以使用如下命令进行权限的修改:
chmod 770 [文件名]
就可以将文件权限修改为rwxrwx—了
如果是 chmod 777 [文件名]
则赋予文件所有权限
文件查看
cat、tac
- cat [文件名]:由第一行开始显示文件内容,用来读文章,或者读取配置文件,都是使用cat
- tac [文件名]:是cat的反写,也就是倒序读取文件内容
nl
- nl [文件名]:类似于cat,只不过显示时会多显示行号(常用)
more、less
- more [文件名]:一页一页的显示文件内容(只能向下翻页、查看)
空格翻页、回车看下一行、:f 查看当前行号
- less [文件名]:与more类似,但可以往前翻页(上下键看上一行或下一行,Page Up向上翻页,Page Down或空格向下翻页,按q退出)
- 在less下查找字符串:使用 / + 字符串(向下查找) 或 ? + 字符串(向上查找) 命令即可查找,查找后输入n(向上)或N(向下),可向下或向上跟进下一个字符串
例如向下查找set字符串,输入/set:
head、tail
- head [-n num] [文件名]:查看文件的头num行,如果-n不写则默认显示10行
- tail [-n num] [文件名]:查看文件的尾num行,如果-n不写则默认显示10行
其他命令
ifconfig
- ifconfig:查看网络配置
hostname
- hostname:更改当前主机名
输入 hostname 111
后,当创建新连接时,主机地址就会改为111
top
top命令可以查看当前所有进程的占用,包括cpu、内存等信息
当输入top命令后会出现如下界面:
我们可以按内存占用排序
按Shift + F,上下移动至%MEM处,按s键后按ESC退出
这样就能看到按占用内存排序了
退出top模式按“q”键即可
jobs
- jobs:查看所有后台执行的作业,在后台启动jar包时经常使用
硬链接与软链接
Linux的链接分为两种:硬链接和软链接
硬链接:A→B,假设B是A的硬链接,那么他们两个指向了同一个文件。允许一个文件拥有多个路径,删除了A链接后,如果还有其他链接(B),那么还是可以访问到原文件的(使用B访问)。用户可以通过这种机制建立硬链接到一些重要的文件上,防止误删
软链接:类似Windows下的快捷方式,删除原文件后,会导致软链接也无法访问
- ln [选项] [原文件] [链接文件]:创建链接
选项:
- -s:创建软链接
[root@centos-7 home]# touch test.txt # 创建一个文件
[root@centos-7 home]# ll
-rw-r--r--. 1 root root 0 3月 11 02:47 test.txt
[root@centos-7 home]# ln test.txt test1.txt # 创建硬链接
[root@centos-7 home]# ll
-rwxrwxrwx. 2 root root 0 3月 11 02:47 test1.txt
-rwxrwxrwx. 2 root root 0 3月 11 02:47 test.txt
[root@centos-7 home]# ln -s test.txt test2.txt # 创建软链接
[root@centos-7 home]# ll
-rwxrwxrwx. 2 root root 0 3月 11 02:47 test1.txt
lrwxrwxrwx. 1 root root 8 3月 11 02:52 test2.txt -> test.txt
-rwxrwxrwx. 2 root root 0 3月 11 02:47 test.txt
[root@centos-7 home]# echo "Hello World." >> test.txt # 写入字符串到原文件
[root@centos-7 home]# cat test.txt
Hello World.
[root@centos-7 home]# cat test1.txt
Hello World.
[root@centos-7 home]# cat test2.txt
Hello World.
只要对原文件进行了修改,查看其他链接时都会查看到相应的修改
当我们删除原文件时,观察变化:
发现硬链接的test1.txt是可以访问的
Vim 编辑器
vim通过一些插件可以实现和IDE一样的功能
Vim是vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能非常丰富,被程序员广泛使用
简单来说,vi是老式的文本编辑器,不过功能已经很齐全了,但是还是有可以进步的地方
vim则可以说是程序开发者的一项很好的工具
所有的Unix Like系统都会内建vi文本编辑器,其他的文本编辑器则不一定会存在
连vim的官方网站也说自己是一个程序开发工具而不是文字处理软件
vim键盘图(不用记,会一般的增删改查即可)
三种模式
基本上vi/vim共分为三种模式,分别是命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)
命令模式
只要是使用vi/vim编辑器打开一个文件,那么默认就会进入命令模式
[root@centos-7 test]# vim hello.txt
输入模式
在命令模式下按下 ‘i’ 即可进入输入模式
输入模式下按 ‘esc’ 键即可返回命令模式
底线命令模式
:wq
在命令模式下按 ‘:’,即可进入底线命令模式,同时并输入wq即可保存并退出,返回到命令行
:set nu
- 输入 ‘:set nu’ 回车后可以显示行号
使用 ‘:set nonu’ 可以取消行号
账号管理
一般在公司中,用的应该不是root账户
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改
- 用户口令的管理
- 用户组的管理
添加账号
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
- useradd [选项] [用户名]
选项:
- -c:comment 指定一段注释性描述。
- -d:目录,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g:用户组,指定用户所属的用户组。
- -G:用户组,指定用户所属的附加组。
- -m:使用者目录如不存在则自动建立。
- -s:Shell文件,指定用户的登录Shell。
- -u:用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
添加后系统会自动添加该用户的主目录
为新增的账号添加密码
在root下:
- passwd [用户名]
在普通用户下:
- passwd
注意:Linux上输入密码是不会显示的,你正常输入就可以了
在公司中,你们一般拿不到公司服务器的root权限,都是一些分配的账号
锁定账号
- 在root下,可以使用
passwd -l [用户名]
对某个用户进行冻结,此后,此用户无法再次登录
删除账号
- userdel [选项] [用户名]
选项:
- -r:把用户的主目录一起连带删除
修改用户
- usermod [选项] [用户名]
选项(与useradd类似,不一一列举了):
例如将Tom用户的目录名改为111,使用usermod -m -d /home/111 Tom
,-d表示修改目录,-m表示自动创建目录
切换用户
1.切换用户的命令为:su username (username是你的用户名哦)
2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
- 切换至Tom用户:
su Tom
,界面如下
- 切换回root用户:
- ①输入su root,然后输入密码:
- ②直接输入exit:
- ③按Ctrl + D退出:
用户组管理
属主、属组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(如开发组、测试组、运维组、root)。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时会同时创建
用户组的管理设计用户组的添加、删除和修改。组的添加、删除和修改实际上就是对**/etc/group文件进行的更新**
创建用户组
- groupadd [选项] [用户组名]
查看/etc/group文件:
选项:
- -g:手动指定组的id,默认是从1000开始
删除用户组
- groupdel [用户组名]
修改用户组
- groupmod [选项] [用户组名]
选项:
- -g:设置id
- -n:修改用户组名
切换用户组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
磁盘管理
df
- df [选项]:列出文件系统整体的磁盘使用量,可以加 ‘-h’ 选项进行人性化显示
选项:
- -a:显示隐藏文件
- -h:人性化显示大小
du
- du [选项] [目录]:检查磁盘空间使用量
选项:
- -s:只显示目录大小,不显示子目录或文件的大小
- -h:人性化显示大小
进程管理
在Linux中,每一个程序都是一个进程,每一个进程都有一个id号
每一个进程都有一个父进程
进程可以有两种方式:前台、后台运行,服务一般是后台运行的,程序一般是前台运行的
ps
- ps [选项]:查看当前系统中正在执行的各种进程的信息
常用的一些组合选项:
- ps -aux:使用BSD格式显示进程,其格式如下
USER:用户名
PID:进程的ID
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
VSZ:该进程使用的虚拟內存量(KB)
RSS:该进程占用的固定內存量(KB)(驻留中页的数量)
TTY:该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
STAT:进程的状态
START:该进程被触发启动时间
TIME:该进程实际使用CPU运行的时间
COMMAND:命令的名称和参数
- ps -ef:使用标准格式显示进程,其格式如下:
UID:用户ID、但输出的是用户名
PID:进程的ID
PPID:父进程ID
C:进程占用CPU的百分比
STIME:进程启动到现在的时间
TTY:该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程
CMD:命令的名称和参数
-
常用用法:ps -aux|grep [进程名]:查看所有的进程,并使用|管道进行过滤,过滤条件是grep [进程名],即查找文件中符合条件的字符串
-
常用用法:ps -ef|grep [进程名]:查看所有的进程,只不过这个可以查看到父进程的信息
-
常用用法:pstree [选项]:查看进程树
选项:
-
-p:显示父进程id
-
-u:显示用户组
-
测试 pstree -pu
kill
- kill:用于结束进程
当进程无法运作时,我们可以通过进程id将指定进程杀死
- 常用用法:kill -9 [进程id]
一般开发中很少用到,除非java出现死循环了,可以使用kill进行杀死
扩展
相关文件
- /etc/passwd:存放用户信息的文件
格式解释:
用户名:口令(这个是看不见的,所以为x):用户标识号:组标识号:注释性描述:主目录:登录Shell
这个文件中的每一行都对应一个用户,但是密码是看不到的
可以查看密码加密的文件:/etc/shadow(了解即可)
- /etc/group:存放用户组信息的文件