常用的基本命令
(基于centos8)
开关机命令
开机登录
开机会启动很多应用程序,他们在Windows叫做“服务”(service),在Linux中就叫做“守护进程”(daemon)。
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限账户为root,可以操作一切
关机
在Linux领域内大多数用在服务器上,很少遇到关机的操作,毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机
关机指令为:shutdown;
sync # 将数据有内存同步到硬盘中(关机之前进行操作,防止数据丢失)
shutdown # 关机命令
shutdown -h 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 和 poweroff
系统目录结构
1、一切皆文件
2、根目录/ ,所有的文件都挂载在这个节点下
登录系统后输入以下命令
ls /
你会看到如下所示
目录管理
树状目录结构
目录结构的解释
/bin:bin是Binary(二进制)的缩写,这个目录存放着常用的命令
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件(不要乱动)
/dev:dev是Device的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
/etc:这个目录是用来存放所有的系统管理所需要的配置文件和子目录(重要)
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的(重要)
/lib:这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。(不要动)
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这个里就存放着一些文件(存放突然关机的一些文件)
/media:Linux会自动识别一些设备,例如光盘,光驱等,当识别后,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:存放服务器网站相关的资源,环境,网站的项目。
LNMP(Linux nginx mysql php)
常用的相关命令
目录管理命令
绝对路径,相对路径
绝对路径,
cd :切换目录命令!
/ :当前目录
cd .. :返回上一级目录
ls (列出命令)
在Linux中,ls可能是最常常被使用的
-a参数:all,查看全部的文件,包括隐藏文件
-l参数:列出所有的文件,包含文件的属性和权限,不显示隐藏文件。
所有的Linux命令可以组合使用。
cd 命令,切换目录
cd 目录名(绝对路径/相对路径)。
绝对路径是以 / 开头,可以在任意位置使用。
相对路径是对于当前目录该如何寻找
多次练习。
pwd 显示当前用户所在的目录
mkdir 创建一个目录
rmdir 删除目录。
rmdir仅能删除空的目录,如果下面存在文件,递归删除多个目录,加 -p参数即可。
cp (复制文件或目录)
cp 原来的位置 新的位置
如果文n件重复,就选择覆盖(y)或放弃(n)。
rm(移除文件或目录)
rm -f # 忽略不存在文件,不会出现警告,强制删除
rm -r # 递归删除目录
rm -i # 询问目录是否删除
rm -rf / #系统中所有的文件都被删除掉,删除跑路(极其危险)
mv 移动文件或目录(可以重命名文件)
-f 强制移动
-u 只替换已经更新过的文件
目录重命名
3…20
基本属性
看懂文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll 或者 ls -l命令来显示一个文件的属性以及文件所属的用户和组。如:
实例中,boot文件的第一个属性用“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确定属组(所有者的同组用户)拥有该文件的权限.
其中:
第1,4,7位表示读权限,如果用“r”来表示,则有读权限,如果用“-”来表示,则没有读权限。
第2,5,8位表示写权限,如果用“w”表示,则有写权限,如果用“-”来表示,则没有写权限。
第3,6,9为表示可执行权限,如果用“x”表示,则有执行权限,如果用“-”来表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件有执行权的用户。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户
因此,Linux系统按文件的所有者,文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,boot文件是一个目录文件,属主和属组都为root
l开头的文件会指向一个具体的文件,当前所在位置是链接文件,即快捷方式
修改文件属性
1、chgrp:更换文件属组(change group)
chgrp [-R] 数组名,文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果同时加上-R参数,那么该目录下的所有文件的属组都会更改。
一般不要改动
2、chown:更改文件属主,也可以同时更改文件属组。(change owner)
chown [-R] 属主名,文件名
chown [-R] 属主名,属组名,文件名
一般不要改动
3、chmod:更改文件的9个属性(必须掌握)
chomd [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字(常用),一种是符号。
Linux文件的基本权限就有九个,分别是owner、group、others三种身份各有自己的read、write、execute权限。
可以使用数字来代表各个权限
r:4 w:2 x:1
可读可写不可执行 rw- 4+2=6
可读可写可执行 rwx 4+2+1=7
chmod 777 文件赋予所有用户可读可写可执行权限(最高权限)
例如
chmod 777 意思就是均为可读可写可执行1+2+4
每种身份(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 filenam
文件内容查看
会经常查看文件
Linux系统中使用以下命令来查看文件的内容
cat命令
- cat 由第一行开始显示文件内容(阅读文章,或者读取配置文件,都是用cat)
tac命令
- tac 从最后一行开始显示,可以看出 tac 是 cat 的反写
nl命令
- nl 显示的时候,顺道输出行号(查看代码可以使用),是常用命令
more命令
- more 一页一页的显示文件内容(空格代表翻页,enter向下移动一行,:f 可以看到当前所在行)
less命令、/命令(查询字符串)、?命令(查询字符串)
- less 与more类似,但是比more更好的是,他可以往前翻页(空格下翻页,pageDown,pageUp键代表翻动页面,退出q命令,查找字符串:/要查找的字符串,向下查询。向上查询:?字符串,n是下一处,N是上一处)
head命令
- head 只看前几行
通过 -n 参数来控制显示行数。
tail命令
- tail 只看最后几行
通过 -n 参数来控制显示行数。
可以使用man命令来查看各个命令的使用文档
网络的配置目录: network-scripts(etc/sysconfig/network-scripts)
默认的网络配置文件
查看网络配置命令
ifconfig
Linux链接的概念(了解即可)
Linux的链接分为两种:硬链接、软链接
硬链接
硬链接:A----B,假设B是A的硬链接,那么他们两个指向同一个文件,允许一个文件有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删
软链接
软链接:类似windows上的快捷方式,删除原文件,快捷方式也无法访问。
创建链接ln命令
硬链接ln命令
软链接ln -s命令
touch命令创建文件
echo输出文字
删除f1之后,硬链接和软链接的对比
Vim编辑器
什么是Vim编辑器
vim通过一些组件可以实现和IDE一样的功能。
Vim是从vi发展出来的一个文本编辑器,代码补完,编译及错误跳转等方便编程的功能特别丰富,在程序员中呗广泛使用。尤其是linux中,必须要会使用vim (查看内容,编辑内容,保存内容)
简单的来说,vi是老式的字处理器,不过功能已经很齐全了,但是还有可以进步的地方
vim则可以说是程序开发者的一款很好的工具。
所有的Unix Like系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。
连vim官方网站(http://vim-china.org)自己也说vim是一个程序里开发工具而不是文字处理软件。
vim键盘图
三种使用模式
基本上vi/vim分为三种模式,分别是
命令模式(Command mode)
输入模式(Insert mode)
和底线命令模式(Last Line mode)
这三种模式的作用分别是
命令模式
用户刚启动vi/vim,便进入了命令模式
此状态下敲击键盘动作会被识别为命令,而非输入字符,比如我们按下i,并不会输入一个字符,而是被当作一个命令,
一下是常用的几个命令
-** i** 切换到输入模式,以输入字符
-** x** 删除当前光标所在处的字符
- **:**切换到底线命令模式,在最底一行输入命令,如果是在编辑模式,则需要先退出编辑模式ESC键。
若想要编辑文本:启动vim,进入命令模式,按下i,切换到输入模式,
命令模式只有一些基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下 i 就进入了输入模式
在输入模式中,可以使用以下按键:
- 字符按键以及shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL删除键,删除光编后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up /Page Down,上下翻页
- Insert,切换光标为输入模式/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式按下**😗*(英文冒号)就进入了底线命令模式,光标就移动到了最底下,就可以在这里输入一些底线命令
在底线命令模式中,基本的命令有(此处省略冒号):wq
- q退出程序
- w保存文件
按ESC键可随时退出底线命令模式。
简单地说,我们可以将这三个模式想象成低下的图标来表示:
完整的演示说明
新建或者编辑文件,按i进入编辑模式,编写内容,编写完成后退出编辑模式,esc,退出之后进入底线命令模式:wq保存退出。
Vim按键说明
除了简易的l,ESC,:wq之外,vim还有很多的按键可以使用
第一部分:一般模式可用的光标移动,复制粘贴,搜索替换等。
移动光标的方法 | |
---|---|
h 或者向左箭头键 | 光标向左移动一个字符 |
j 或者向下箭头键 | 光标向下移动一个字符 |
k 或向上箭头键 | 光标向上移动一个字符 |
l 或向右箭头键 | 光标向右移动一个字字符 |
Ctrl+f | 屏幕向下移动一页,相当于Page Down键(常用) |
Ctrl+b | 屏幕向下一动一页,相当于page Upan键(常用) |
Ctrl+d | 屏幕向下移动半页 |
Ctrl+u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n | 那个n表示数字,按下数字后再按空格键,光标会向右移动这一行的n个字符,快捷切换光标(命令模式下) |
0或Home键 | 这是数字0,移动到这一行的最前面字符处(常用) |
$或End键 | 移动到这一行的最后面的字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕最下方的那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n为数字,移动到这个档案的第n行, |
&& | 移动到这个档案的第一行,相当于1G,(常用) |
n | n为数字,光标向下移动n行,(常见) |
搜索替换 | – |
/word | 向光标之下寻找一个名为word的字符串,(常用) |
?word | 向光标之上寻找一个字符串为word的字符串 |
n | n是一个英文按键,代表重复前一个搜寻的动作,即windows中的 下一个,?命令则相反 |
N | 上一个 ?命令与之相反 |
删除,复制与粘贴 | |
x,X | 在一行字当中,x为向后删除一个字符(相当于del按键)X为向前删除一个字符,(相当于backspace,即是退格键(常用)) |
nx | n为数字,连续向后删除n个字符,举例来说,我要连续删除10个字符,10x |
dd | 删除游标所在的一整行 |
ndd | n为数字,删除光标所在的向下n行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 数字0,删除光标所在处,到该行的最前面的一个字符 |
yy | 复制游标所在的那一行 |
nyy | n为数字,复制光标所在的向下n行, |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的数据 |
y0 | 复制光标所在的那个字符到该行行首的左右数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p,P | p为将已复制的数据在光标下一行贴上,P则为贴在上一行。 |
j | 将光标所在行与下一行数据结合成同一行 |
c | 重复删除多个数据,例如向下删除10行,10cj |
u | 复原前一个动作(常用) |
Ctrl+r | 重做上一个动作(常用) |
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式 | |
---|---|
i,I | 进入输入模式(insert into):i为从目前光标所在处进入,I为在目前所在行的第一个非空格符处开始输入 |
a,A | 进入输入模式(insert into):a为从目前光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入(常用) |
o,O | 进入输入模式(insert into):o为在目前光标所在的下一行处输入新的一行 |
r,R | 进入取代模式(Replace mode):r只会取代光标所在那一行的那个字符一次,R会一直取代光标所在位置,直到按下ESC;(常用) |
ESC | 退出编辑模式,回到一般模式中(常用) |
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存,离开等指令 | |
---|---|
:w | 将编写的数据写入硬盘档案中(常用) |
:w! | 若文件属性为只读时,强制写入该档案,不过到底能不能写入,还是和你对该档案的档案权限有关 |
:q | 离开vi |
:q! | 若曾修改过档案,又不想储存,使用!为强制离开不存储档案 |
注意:惊叹号常常具有强制的意思 | |
:wq | 储存后离开,若为:wq! 则为强制储存后离开(常用) |
== ZZ== | 大写Z,若档案没有改动,则不存储离开,若档案已经更改过,则储存后离开 |
:w [filename] | 将编辑的数据存成另一个档案(另存新档) |
:r [filename] | 在编辑数据中,读入另一个档案的数据,将filename这个档案内容加到游标所在行后面 |
:n1 n2 w [filename] | 将n1,n2 的内容储存城filename这个档案 |
:! command | 暂时离开vi到指令模式下执行command的显示结果!例如【:! ls /home】即可在vi当中查看 /home底下以ls输出的档案信息 |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与set nu 相反,取消行号 |
账号管理
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员中申请一个账号,然后
以这个账号的身份进入系统
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制它们对系统资源得访问;另一方面也可以帮助用户组织文件,并为用户提供安区性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有以下几个方面
- 用户账号的添加,删除与修改
- 用户口令的管理
- 用户组的管理
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加,修改和删除。
添加用户账号就是在一个系统中创建一个新的账号,然后为账号分配用户号,用户组,主目录和登录Shell等资源
useradd 命令 添加用户
useradd -选项 用户名
-m:自动创建这个用户的主目录 /home/hang
本质:Linux中一切皆文件,添加用户说白了就是汪某一个文件中写入用户的信息 /etc/passwd
-C:comment 指定一段注释性描述
-d:目录 指定用户目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录
-g:用户组,指定用户所属的用户组
-G:用户组,指定用户所属的附加组
-s:Shell文件,指定用户的登录Shell
-u:用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其它用户的标识号
userdel 命令 删除用户
userdel -r hang -r参数是删除用户的时候一并将目录删除掉,删除之后 配置文件中的数据也会随之删除
usermod 命令 修改用户
修改用户 usermod 对应修改的内容 修改的用户
参数和添加用户相同
修改完成之后需要查看配置文件。
切换用户
root用户
1、切换用户的命令为:su username 【username是你的用户名】
2、从普通用户切换到root用户,还可以使用命令:sudo su
3、在终端输入exit或logout或使用快捷方式Ctrl+d,可以退回到原来用户,其实Ctrl+d也是执行exit命令
4、在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如【su-root】
$表示普通用户
#表示超级用户,也就是root用户
查看服务器主机名 hostname
修改主机名
修改完成之后重新连接方可生效
用户密码设置
我们一般通过root创建用户的时候要配置密码
root用户修改密码
使用新用户登录的时候直接打开新的连接即可
Linux上输入密码不会显示
普通用户修改密码
不可以太简单的密码
锁定账户
root用户可以进行冻结账号操作,一旦冻结,就无法登陆了。
命令
passwd -l (lock)username
passwd -d username #没有密码也不能登陆
用户组的管理
属主,属组
每个用户都有一个组,系统可以对一个用户组中的所有用户进行集中管理,不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户的时候同时创建。
用户组的管理涉及用户组的添加,删除和修改,组的增加,删除和修改实际上就是对etc/group文件的更新。
创建一个用户组 groupadd
创建完用户组可以得到一个组的id,这个id是可以指定的(-g id),如果不指定会自增1.
删除用户组 groupdel
修改用户组的权限信息和名字 groupmod -g(修改id)-n(修改名字)
用户如何更换自己的用户组
# 登陆当前用户 hang
$ newgrp root (前提是有权限)
拓展:文件的查看
/etc/passwd
用户名:口令(登录密码,不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
#标识号也是自增的。
这个文件中的每一行代码都代表一个用户,我们可以从这里看出这个用户的主目录那里,可以看到属于哪一个组。
登录口令也就是密码。如果是x则是不可看到的,真正加密后的用户口令字存放到/etc/shadow文件中,保证密码的安全性。
用户组的信息都存放在/etc/group文件中。
磁盘的管理
df(列出文件系统整体的磁盘使用量 -h参数可以以M或者G为单位)
du(检查磁盘空间的使用量,-a)
du -sm /* 检查根目录下每个文件夹所占的容量
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件
挂载:mount
有时候不挂载无权限访问
卸载:umount [挂载位置](-f参数为强制卸载)
进程管理
什么是进程
- 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
- 每一个进程都会有一个父进程
- 进程可以有两种存在方式,前台和后台运行
- 一般的服务都是后台进行的,基本的程序都是前台运行的
进程命令
ps命令
ps命令查看当前系统中正在执行的各种进程的信息
ps -xx:
- -a 显示当前终端运行的所有进程信息(当前进程)
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数
# ps -aux 查看所有的函数
ps -aux| grep mysql #查看关于mysql的进程
ps -aux| grep redis
ps -aux| grep java
# | 在Linux中这个叫做管道符 A|B
# 将A命令的操作结果作为输出来操作B命令
# grep 查找文件中符合条件的字符串
** ps -ef :可以看到父进程的一些信息**
ps -ef |grep mysql# 可以看到mysql的父进程
#看父进程我们一般可以通过目录树来查看
pstree -pu
-p 显示父id
-u 显示用户组
结束进程:杀掉进程,等价于windows结束进程
kill -9 xxx(进程的id)
#表示强制结束进程
小总结
Linux中一一切皆文件
写的不好,如有错误,还请大佬多多指正