Liunx 操作命令学习记录
常用的基本命令
目录管理
绝对路径、相对路径
# 切换目录命令!
cd
# 当前目录
./
# 返回上一级
cd ..
ls (列出目录)
# 查看全部文件,包括隐藏文件
-a, --all do not ignore entries starting with .
# 列出所有的文件,包含文件的属性和权限,没有隐藏文件
-l use a long listing format
# 参数可以组合使用 例: ls -al
cd 命令 切换目录
cd 目录名(绝对路径都是以/开头,相对路径,对于当前目录)
pwd 显示当前用户所在的目录
[root@VM_0_9_centos home]# pwd
/home
mkdir 创建文件夹
[root@VM_0_9_centos home]# mkdir ceshi
[root@VM_0_9_centos home]# ls
ceshi dockerfile docker-test-volume mysql
# 递归创建/创建多级目录 -p
[root@VM_0_9_centos home]# mkdir -p ceshi1/ceshi2
[root@VM_0_9_centos home]# ls
ceshi ceshi1 dockerfile docker-test-volume mysql
[root@VM_0_9_centos home]# cd ceshi1
[root@VM_0_9_centos ceshi1]# ls
ceshi2
rmdir 删除目录
# 只能删除空的目录
[root@VM_0_9_centos home]# rmdir ceshi1
rmdir: failed to remove ‘ceshi1’: Directory not empty
# 如果下面存在文件,需要删除文件,递归删除多个目录用 -p参数
[root@VM_0_9_centos home]# rmdir -p ceshi1/ceshi2
[root@VM_0_9_centos home]# ls
ceshi dockerfile docker-test-volume mysql
cp (复制文件或者目录)
# cp 原来的目录 新的目录
[root@VM_0_9_centos home]# ls
ceshi ceshi1 dockerfile docker-test-volume mysql
[root@VM_0_9_centos home]# cd ceshi
[root@VM_0_9_centos ceshi]# ls
test1.java test.java
[root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
[root@VM_0_9_centos ceshi]# cd ..
[root@VM_0_9_centos home]# cd ceshi1
[root@VM_0_9_centos ceshi1]# ls
test.java
# 文件重复 拷贝会询问是否覆盖,与windows是一样的
[root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
cp: overwrite ‘../ceshi1/test.java’? y
rm (移除文件或者目录!)
# -f 忽略不存在的文件,不会出现警告,强制删除
# -r 递归删除目录
# -i 互动,删除询问是否删除
[root@VM_0_9_centos ceshi1]# rm -rf test.java
[root@VM_0_9_centos ceshi1]# ls
[root@VM_0_9_centos ceshi1]#
rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!
rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!
rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!
rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!
rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!
mv 移动文件或者
# -f 强制
# -u 只替换已经更新过的文件
# 移动文件
[root@VM_0_9_centos ceshi]# ls
test1.java test.java
[root@VM_0_9_centos ceshi]# mv test.java ../ceshi1
[root@VM_0_9_centos ceshi]# ls
test1.java
[root@VM_0_9_centos ceshi]# cd ../ceshi1
[root@VM_0_9_centos ceshi1]# ls
test.java
#重命名文件夹
[root@VM_0_9_centos home]# mv ceshi1 ceshi2
[root@VM_0_9_centos home]# ls
ceshi ceshi2
基本属性
看懂文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同用户访问同一问价(包括目录文件)的权限做了不同的规定.
在Linux中我们可以使用ll
或者ls -l
命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@VM_0_9_centos /]# ll
total 84
-rw-r--r-- 1 root root 93 Jul 17 2020 backup.db
lrwxrwxrwx. 1 root root 7 Mar 7 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 17 2020 boot
drwxr-xr-x 2 root root 4096 Nov 5 2019 data
drwxr-xr-x 19 root root 2980 Jul 8 2020 dev
drwxr-xr-x. 93 root root 12288 Jun 2 11:49 etc
drwxr-xr-x. 7 root root 4096 Jun 11 09:26 home
lrwxrwxrwx. 1 root root 7 Mar 7 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 7 2019 lib64 -> usr/lib64
drwx------. 2 root root 16384 Mar 7 2019 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x 3 root root 4096 Jun 9 18:08 mydata
drwxr-xr-x 2 root root 4096 Aug 20 2020 nmon
drwxr-xr-x. 4 root root 4096 Jun 2 11:49 opt
dr-xr-xr-x 87 root root 0 Jul 8 2020 proc
dr-xr-x---. 9 root root 4096 Jun 8 11:52 root
drwxr-xr-x 30 root root 1000 Jun 7 11:16 run
lrwxrwxrwx. 1 root root 8 Mar 7 2019 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Jun 7 10:45 sys
drwxrwxrwt. 9 root root 4096 Jun 11 09:25 tmp
drwxr-xr-x. 13 root root 4096 Mar 7 2019 usr
drwxr-xr-x. 19 root root 4096 Apr 22 2020 var
实例中,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位确定属组(所有者的同组用户)拥有该文件的权限,
第7-9位确定其他用户拥有该文件的权限
其中:
第1、4、7位表示读权限,如果用“r”字符表示,则有读权限,如果用“-”字符表示,则没有读权限;
第2、5、8位表示写权限,如果用“w"字符表示,则有写权限,如果用”-“字符,则表示没有写权限;
第3、6、9位表示,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限;
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户
同时,在linux中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可以为文件所有者的同组用户和其他用户.
因此,Linux系统按照文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限
在以上实例中,boot文件是一个目录文件,属主和数组都为root
修改文件属性
1 . chgrp : 更改文件属组
chgrp [-R] 属组名 文件名
-R: 递归更改文件属组,就是在更改某个目录的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改.
2. chgrp : 更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名
3. chmod: 更改文件9个属性(掌握)
chmod [-R] xyz 文件或目录
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 filename
文件内容查看
Linux系统中是使用以下命令来查看文件的内容:
-
cat 由第一行开始显文件内容
[root@VM_0_9_centos network-scripts]# cat ifcfg-eth0 # Created by cloud-init on instance boot automatically, do not edit. # BOOTPROTO=dhcp DEVICE=eth0 HWADDR=52:54:00:de:11:64 ONBOOT=yes PERSISTENT_DHCLIENT=yes TYPE=Ethernet USERCTL=no
-
tac 从最后一行开始显示,可以看出tac是cat的倒着写
[root@VM_0_9_centos network-scripts]# tac ifcfg-eth0 USERCTL=no TYPE=Ethernet PERSISTENT_DHCLIENT=yes ONBOOT=yes HWADDR=52:54:00:de:11:64 DEVICE=eth0 BOOTPROTO=dhcp
-
nl 显示的时候,顺道输出行号
[root@VM_0_9_centos network-scripts]# nl ifcfg-eth0 1 # Created by cloud-init on instance boot automatically, do not edit. 2 # 3 BOOTPROTO=dhcp 4 DEVICE=eth0 5 HWADDR=52:54:00:de:11:64 6 ONBOOT=yes 7 PERSISTENT_DHCLIENT=yes 8 TYPE=Ethernet 9 USERCTL=no
-
more 一页一页 的显示文件内容 (空格下一页 enter下一行)
[root@VM_0_9_centos etc]# more csh.login # /etc/csh.login # System wide environment and startup programs, for login setup if ( ! ${?PATH} ) then if ( $uid == 0 ) then setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin" else setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin" endif else #add sbin directories to the path foreach p ( /usr/local/sbin /usr/sbin ) switch (":${PATH}:") case "*:${p}:*": breaksw default: --More--(39%)
-
less 与 more类似,但是比more更好的是,他可以往前翻页(空格翻页,退出q命令,查找字符串/要查询向下查询,向上查询使用?要查询的字符串 n继续搜寻下一个,N 向上寻找)
[root@VM_0_9_centos etc]# less csh.login # /etc/csh.login # System wide environment and startup programs, for login setup if ( ! ${?PATH} ) then if ( $uid == 0 ) then setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin" else setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin" endif else
-
head 只看头几行
[root@VM_0_9_centos etc]# head csh.login # /etc/csh.login # System wide environment and startup programs, for login setup if ( ! ${?PATH} ) then if ( $uid == 0 ) then setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin" else setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin" endif
-
tail 只看尾巴几行 (-n 行数)
[root@VM_0_9_centos etc]# tail csh.login if ( -r "$i" ) then if ($?prompt) then source "$i" else source "$i" >& /dev/null endif endif end unset i nonomatch endif
你可以使用man[命名]来查看各个命令的使用文档,如: man cp
ifconfig 查看网络配置> 拓展: Linux 链接概念
Linux的链接分为两种:硬链接 软连接
硬链接: A---B,假设B是A的硬链接,那么他们两个指向了同一个文件!,允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!
软链接: 类似window的快捷方式,删除的源文件,快捷方式也无法访问
# 硬链接
[root@VM_0_9_centos ceshi]# ln test test1
# 软链接(符号链接)
[root@VM_0_9_centos ceshi]# ln -s test test2
[root@VM_0_9_centos ceshi]# ls -ll
total 0
-rw-r--r-- 2 root root 0 Jun 15 10:18 test
-rw-r--r-- 2 root root 0 Jun 15 10:18 test1
-rw-r--r-- 1 root root 0 Jun 4 10:47 test1.java
lrwxrwxrwx 1 root root 4 Jun 15 10:19 test2 -> test
[root@VM_0_9_centos ceshi]# echo "hello world" >> test
[root@VM_0_9_centos ceshi]# cat test
hello world
[root@VM_0_9_centos ceshi]# cat test1
hello world
[root@VM_0_9_centos ceshi]# cat test2
hello world
# 删除源文件
[root@VM_0_9_centos ceshi]# rm -rf test
[root@VM_0_9_centos ceshi]# ls
test1 test1.java test2
[root@VM_0_9_centos ceshi]# cat test1
hello world
# 软链接已经失效
[root@VM_0_9_centos ceshi]# cat test2
cat: test2: No such file or directory
创建 ln命令
touch
创建文件命令
echo
输入字符串
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可随时退出底线命令模式
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n< space> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊!(常用) |
n< Enter> | n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
删除、复制与粘贴 | |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式 | |
---|---|
i, I | 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用) |
a, A | 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令 | |
---|---|
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
: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 -选项 用户名
参数说明:
-
选项 :
-
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -m 使用者目录如不存在则自动建立。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
用户名 :
-
- 指定新账号的登录名。
测试:
[root@VM_0_9_centos ~]# useradd -m zhonglao
[root@VM_0_9_centos ~]# cd /home/
[root@VM_0_9_centos home]# ls
dockerfile docker-test-volume mysql zhonglao
本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了! 可以查看配置 /etc/passwd
删除用户 userdel
userdel -r zhonglao
# 删除用户,并将他的目录也一并删除
[root@VM_0_9_centos home]# userdel -r zhonglao
[root@VM_0_9_centos home]# ls
dockerfile docker-test-volume mysql
修改用户 usermod
修改的其他选项,与新增一致
usermod -d /home/233 zhonglao
[root@VM_0_9_centos home]# useradd -m zhonglao
[root@VM_0_9_centos home]# usermod -d /home/233 zhonglao
[root@VM_0_9_centos home]# ls
dockerfile docker-test-volume mysql zhonglao
[root@VM_0_9_centos home]# cat /etc/passwd
//......
zhonglao:x:1001:1001::/home/233:/bin/bash
切换用户
root用户
1.切换用户的命令为:su username [username是你的用户名]
2.从普通用户切换到root用户,还可以使用命令: sudo su
3.在中断输入exit和logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:[su-root]
$表示普通用户
表示超级用户,也就是root用户
注意 如果出现
# 这样的情况
[root@VM_0_9_centos home]# su zhonglao
bash-4.2$
# 可以先查看 用户的目录情况
[root@VM_0_9_centos home]# cat /etc/passwd
//..........
zhonglao:x:1001:1001::/home/233:/bin/bash
# 改回之前的目录或者创建
[root@VM_0_9_centos home]# usermod -d /home/zhonglao zhonglao
//...
zhonglao:x:1001:1001::/home/zhonglao:/bin/bash
# 再次切换
[root@VM_0_9_centos home]# su zhonglao
[zhonglao@VM_0_9_centos home]$
# 查看主机名
[root@VM_0_9_centos home]# hostname
# 修改主机名
[root@VM_0_9_centos home]# hostname rootzl
# 重新登录 主机名就会变了 重启电脑之后就会消失
[root@rootzl ~]#
用户的密码设置
给用户设置密码,用户就可以登录了,liunx密码是不会显示的
超级用户可以改任何用户指定密码
# passwd username
[root@rootzl ~]# passwd zhonglao
Changing password for user zhonglao.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
如果是普通用户
passwd
(current) UNIX password:
new password:
re password
锁定账户
passwd -l zhonglao # 锁定之后这个用户就不能登录了
passwd -d zhonglao # 没有密码也不能登录
用户组管理
属主 属组
每个用户都有一个用户组,系统可以对一个用户组中的所用用户进行集中管理(开发 测试 运维 root),不同的Liunx系统对用户组的规定有所不同,如Linux下的用户属于与他同名的用户组,这个用户组在创建用户时间时创建
用户组的管理设计用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
创建用户组
[root@rootzl ~]# groupadd zld
[root@rootzl ~]# cat /etc/group
//...
docker:x:990:
zhonglao:x:1001:
zld:x:1002:
创建完用户组可以得到一个组的id,这个id是可以指定的(-g 520
),如果不指定就是自增的
删除用户组
[root@rootzl ~]# groupdel zld
修改用户组的权限信息和名字
[root@rootzl ~]# groupmod -g 520 -n newzld zld
用户切换用户组
# 登录当前用户 zhonglao
$ newgrp root
拓展:文件的查看
/etc/passwd
用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
这个文件中的每一行都代表一个用户,我们可以从这里看出这个用户目录在哪里,属于那个组
登录口令:把真正的加密后的用户口令存放到/etc/shadow
文件中,保证我们密码的安全性!
磁盘管理
df (列出文件系统整体的磁盘使用量) du(检查磁盘控件使用量)
# df
[root@rootzl ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 930108 0 930108 0% /dev
tmpfs 941028 0 941028 0% /dev/shm
tmpfs 941028 660 940368 1% /run
tmpfs 941028 0 941028 0% /sys/fs/cgroup
/dev/vda1 51473868 12787188 36489436 26% /
tmpfs 188208 0 188208 0% /run/user/0
# -h 把字节转换成 M
[root@rootzl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 660K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 50G 13G 35G 26% /
tmpfs 184M 0 184M 0% /run/user/0
# du
[root@rootzl ~]# du
8 ./.cache/abrt
12 ./.cache
8 ./.pip
8 ./.docker
8 ./.ssh
4 ./.pki/nssdb
8 ./.pki
4 ./.config/abrt
8 ./.config
......
# 包括隐藏文件
[root@rootzl ~]# du -a
# 检查根目录下每个目录所占用的容量
[root@rootzl ~]# du -sm /*
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件
挂载: mount 将 外部设备 挂载到mnt下进行 访问
[root@rootzl /]# ls
backup.db boot dev home lib64 media mydata opt root sbin sys usr
bin data etc lib lost+found mnt nmon proc run srv tmp var
[root@rootzl /]# mount /dev/zhonglao /mnt/zhonglao
卸载: umount -f [挂载位置] 强制卸载
进程管理
什么是进程
1.在Linux中,每个程序都是有自己的一个进程,每个进程都有一个id号
2.每个进程,都有一个父进程
3.进程可以有两种存在方式:前台!后台运行!
4.一般的话服务都是后台运行的,基本的程序都是前后台运行的
命令
ps 查看当前系统中正在执行的各种进程的信息!
ps -xx:
- -a 显示当前终端运行的所有的进程信息
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数
# ps -aux| 查看所有的进程
ps -aux|grep mysql
# | 在Linux这个叫管道符 A|B
# grep 查找文件中符合条件的字符串
[root@rootzl ~]# ps -aux|grep mysql
root 10961 0.0 0.0 112812 968 pts/0 S+ 15:02 0:00 grep --color=auto mysql
root 19804 0.0 0.0 11820 704 ? S Mar20 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
root 20083 0.2 20.6 1368472 388128 ? Sl Mar20 323:11 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=root --log-error=/var/log/mariadb/mariadb.log --pid-file=/usr/local/mysql/data/mysql.pid --socket=/tmp/mysql.sock --port=5186
ps -ef:可以查看到父进程的信息
ps -ef|grep mysql # 看父进程 我们一般可以通过目录结构查看
# 进程树
pstree -pu
-p 显示父id
-u 显示用户组
结束进程:杀掉进程,等价于window结束任务
# 强制结束进程
kill-9 进程的id