废话不多说,待补
linux的文件系统是采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在此目录下再创建其它的目录。
在linux世界里。一切皆文件。
- 总结
- Linux目录结构有且只有一个根目录
- linux各个目录存放内容都是有规划的,切忌随意放置文件
- linux是以文件的形式管理我们的设备,因此,在linux世界里,一切皆文件
简介
Xftp是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用 Xftp,windows 用户能安全地在UNIX/Linux和Windows PC 之间传输文件。
解决中文乱码问题
打开(会话) -》属性 -》 选项 -》 编码 -》 UTF-8
1. 点击打开按钮
2. 在弹出的会话框中选择虚拟机,点击属性按钮
3. 在属性框中选择选项菜单
4. 修改成指定的编码后点击完成即可
安装配置和使用,待补
所有的 Linux 系统都会内建 vi 文本编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本。可主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员队列中被广泛使用
查看是否已经安装vim编辑器
rpm -qa|grep vim
输出结果如下,则说明已安装Vim编辑器,否则安装Vim
vim-filesystem-7.4.629-6.el7.x86_64
vim-X11-7.4.629-6.el7.x86_64
vim-minimal-7.4.629-6.el7.x86_64
vim-common-7.4.629-6.el7.x86_64
vim-enhanced-7.4.629-6.el7.x86_64
安装Vim编辑器指令
yum -y install vim*
使用vim开发一个Hello.java程序,并保存
class Hello{
public static void main(String[] args){
System.out.println("Hello");
}
}
操作步骤:
1. 执行指令 vim Hello.java
2. 按 i
进入编辑模式,输入以上内容
3. 按 esc
回到正常模式,并输入 :
进入命令行模式,键入 :wq
进行保存并退出
:wq :保存并退出
:q :退出,在没有修改文件内容时使用
:q! :强制退出,不保存本次修改的内容,强制性退出文档的编辑
1. 拷贝当前行yy, 拷贝当前行向下的5行5yy,并粘贴(p)。
2. 删除当前行dd, 删除当前行向下的5行5dd
3. 在文件中查找某个单词[命令行下/关键字,回车查找,输入n 就是查找下一个]
例:
输入 / 进入命令行模式,在 / 后输入关键字,回车进行查找,输入 n 查找下一个关键字
4. 设置文件的行号,取消文件的行号.[命令行下: set nu 和:set nonu]
5. 编辑/etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg]
注意:这些都是在正常模式下执行的
6. 在一个文件中输入"hello" ,然后又撤销这个动作,在正常模式下输入u
编辑模式中输入 hello,回到正常模式,输入 u
7. 编辑/etc/profile 文件,并将光标移动到20行shift+g
第一步:显示行号 :set nu
第二步:输入 20 这个数
第三步:输入 shift+g
8. 更多快捷键需要自行百度收集
shutdown -h now
: 立刻进行关机shutdown -h 1
: 1分钟后关机shutdown -r now
: 重启计算机shutdown -r 20:35
:在时间为20:35时重启halt
: 关机reboot
: 重启sync
: 把内存的数据同步到磁盘注意细节:不管是重启系统还是关闭系统,最好首先要运行sync命令,把内存中的数据写到磁盘中
su - 用户名
”命令来切换成系统管理员身份logout
即可注销用户su - 用户名
: 切换用户logout
: 注销用户注意细节:
1)logout
注销指令在图形运行级别无效,在运行级别3下有效
2)运行级别后面介绍
useradd [选项] 用户名
[root@contos7 home]# useradd tom
[root@contos7 home]# id tom
uid=1001(tom) gid=1003(tom) groups=1003(tom)
注意:
- 当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录(指定目录为不存在的目录)
passwd 用户名
[root@contos7 home]# passwd tom
Changing password for user tom.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
注意: 输入密码时,是看不到输入的密码的,其实已经输入了
userdel 用户名
userdel -r 用户名
[root@contos7 home]# userdel tom
[root@contos7 home]# id tom
id: tom: no such user
[root@contos7 home]# ll
total 0
drwx------. 2 1001 1003 62 Jun 18 09:13 tom
解析:
userdel
指令删除 tom 用户id
指令查看 tom 是否存在ll
指令查看 tom 家目录是否存在id 用户名
例:查询 root 信息
[root@contos7 ~]# id root
uid=0(root) gid=0(root) groups=0(root)
解析:
uid:用户id
gid:所在组的id
groups:所在组的名称
注意: 当用户不存在时,返回 no such user (无此用户)
su – 切换用户名
[root@contos7 home]# useradd jerry
[root@contos7 home]# su - jerry
[jerry@contos7 ~]$ exit
logout
细节说明:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
- 当需要返回到原来用户时,使用 exit 指令(返回到上一次切换的用户)
whoami / who am I
查看当前用户:whoami
查看登陆用户:who am I
[root@contos7 home]# clear
[root@contos7 home]# su - jerry
Last login: Thu Jun 18 09:37:47 CST 2020 on pts/0
[jerry@contos7 ~]$ whoami
jerry
[jerry@contos7 ~]$ who am i
root pts/0 2020-06-18 09:09 (192.168.153.1)
介绍:
类似于角色,系统可以对有共性的多个用户进行统一的管理
groupadd 组名
[root@contos7 ~]# groupadd shaolin
通过
cut -d : -f 1 /etc/group
查看用户组
groupdel 组名
[root@contos7 home]# groupdel shaolin
useradd -g 用户组 用户名
[root@contos7 home]# useradd -g wudang zwj
useradd: group 'wudang' does not exist
[root@contos7 home]# groupadd wudang
[root@contos7 home]# useradd -g wudang zwj
[root@contos7 home]# id zwj
uid=1002(zwj) gid=1004(wudang) groups=1004(wudang)
注意:新增用户时直接加上组,组必须存在
usermod -g 用户组 用户名
[root@contos7 home]# groupadd mingjiao
[root@contos7 home]# usermod -g mingjiao zwj
[root@contos7 home]# id zwj
uid=1002(zwj) gid=1005(mingjiao) groups=1005(mingjiao)
[root@contos7 ~]# vim /etc/passwd
jerry:x:1001:1003::/home/jerry:/bin/bash
zwj:x:1002:1005::/home/zwj:/bin/bash
含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
注意:
勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出
[root@contos7 ~]# vim /etc/shadow
jerry:!!:18431:0:99999:7:::
zwj:!!:18431:0:99999:7:::
含义:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
注意:
勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出
root:x:0:
bin:x:1:
daemon:x:2:
含义:
组名:口令:组标识号:组内用户列表
注意:
勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出
切换指令:
init [012356]
[root@contos7 ~]# init 6
执行 init 6
指令将会导致系统重启
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2 :多用户状态没有网络服务
3 :多用户状态有网络服务
4 :系统未使用保留给用户
5 :图形界面
6 :系统重启
常用运行级别是3和5
特别说明:有些级别不一定生效。
例如:级别5
此章节使用 centos7 无图形化界面的操作系统,级别5无效
man [命令或配置文件]
例:查看ls命令的帮助信息
[root@contos7 ~]# man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
-b, --escape
print C-style escapes for nongraphic characters
--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below
-B, --ignore-backups
do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise: sort by
ctime, newest first
-C list entries by columns
Manual page ls(1) line 183/219 (END) (press h for help or q to quit)【按q键退出】
例:查看cd命令的帮助信息
[root@contos7 ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars' is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
温馨提示:
百度帮助更直接更快速
虽然上面两个都可以来获取指令帮助,但是需要英语功底,如果英语不太好,推荐大家直接百度指令更靠谱。
pwd
[root@contos7 ~]# pwd
/root
ls [选项] [目录或是文件]
常用选项 | 含义 |
---|---|
-a | 显示当前目录所有的文件和目录,包括隐藏的 |
-l | 以列表的方式显示信息 |
[root@contos7 ~]# ls -la /home
total 0
drwxr-xr-x. 5 root root 41 Jun 18 09:57 .
dr-xr-xr-x. 18 root root 236 Jun 5 18:45 ..
drwx------. 2 jerry jerry 83 Jun 18 09:34 jerry
drwx------. 2 jerry jerry 62 Jun 18 09:13 tom
drwx------. 2 zwj mingjiao 99 Jun 18 10:18 zwj
cd [参数]
常用参数 | 含义 |
---|---|
cd ~ 或者cd | 回到自己家目录 |
cd … | 回到当前目录的上一级目录 |
mkdir [选项] 要创建的目录
常用选项 | 含义 |
---|---|
-p | 创建多级目录 |
[root@contos7 ~]# mkdir a1
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun 5 18:46 anaconda-ks.cfg
[root@contos7 ~]# mkdir -p b1/b2/b3
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun 5 18:46 anaconda-ks.cfg
drwxr-xr-x. 3 root root 16 Jun 18 11:43 b1
[root@contos7 ~]# cd b1/b2
[root@contos7 b2]# ll
total 0
drwxr-xr-x. 2 root root 6 Jun 18 11:43 b3
[root@contos7 b2]#
rmdir [选项] 要删除的空目录
rm -rf 要删除的目录
常用选项 | 含义 |
---|---|
-r | 强制删除,忽略不存在的文件,无需提示 |
-f | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
例:删除刚才创建的多级b1文件夹
[root@contos7 ~]# rm -rf b1
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun 5 18:46 anaconda-ks.cfg
使用细节:rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录
touch 文件名称
例1: 创建一个空文件
[root@contos7 ~]# touch ok1.txt
例2: 创建多个空文件
[root@contos7 ~]# touch ok1.txt ok2.txt ok3.txt
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun 5 18:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Jun 18 11:58 ok1.txt
-rw-r--r--. 1 root root 0 Jun 18 11:58 ok2.txt
-rw-r--r--. 1 root root 0 Jun 18 11:58 ok3.txt
cp [选项] source dest
常用选项 | 含义 |
---|---|
-r | 递归复制整个文件夹 |
[root@contos7 ~]# cp ok1.txt /home
[root@contos7 ~]# cd /home
[root@contos7 home]# ll
total 4
drwx------. 2 jerry jerry 83 Jun 18 09:34 jerry
-rw-r--r--. 1 root root 5 Jun 18 12:04 ok1.txt
drwx------. 2 jerry jerry 62 Jun 18 09:13 tom
drwx------. 2 zwj mingjiao 99 Jun 18 10:18 zwj
[root@contos7 ~]# mkdir -p a2/b2/c2
[root@contos7 ~]# cp -r a2 /home
使用细节
cp -r mk1 mk2 这个指令,当发现目标下有相同文件,会提示你是否覆盖
强制覆盖不提示的方法:\cp
\cp -r mk1 mk2
rm [选项] 要删除的文件或目录
常用选项 | 含义 |
---|---|
-r | 递归删除是整个文件夹 |
-f | 强制删除不提示 |
使用细节:
强制删除不提示的方法:带上 -f 参数即可
mv oldNameFile newNameFile
(功能描述:重命名)mv /temp/movefile /targetFolder
(功能描述:移动文件)[root@contos7 ~]# mv a1 a3
[root@contos7 ~]# mv a3 a2
解析:
mv a1 a3:将 a1 改名为 a3【无a3】
mv a3 a2:将 a3 移动到 a2 中【有a2,并且a2为目录】
技巧:
最后的参数为文件则重命名,最后的参数为目录则移动文件
cat [选项] 要查看的文件
常用选项 | 含义 |
---|---|
-n | 显示行号 |
例: 查看 /ect/profile 文件内容,并显示行号
指令:cat -n /etc/profile
• 产生的问题
一执行此指令就将内容全部显示完,导致立刻就退出来了
• 使用细节
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
指令:cat -n /etc/profile | more
• 快捷键
空格按分页显示,回车显示下一行
more指令:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
more指令中内置了若干快捷键,详见操作说明
基本语法:more 要查看的文件
操作说明:
快捷键 | 功能说明 |
---|---|
空白键space | 代表向下翻一页 |
Enter | 代表向下翻一行 |
q | 代表立刻离开 more, 不在显示该文件内容 |
Ctrl+F | 向下翻动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前的行号 |
less指令:分屏查看文件内容
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
基本语法:less 要查看的文件
操作说明:
快捷键 | 功能说明 |
---|---|
空白键space | 滚动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/字串 | 向下搜寻【字串】的功能:n:向下查找;N:向上查找 |
?字串 | 向上搜寻【字串】的功能:n:向上查找;N:向下查找 |
q | 离开 less 这个程序 |
• > 指令 和 >> 指令:> 输出重定向 和 >> 追加
1)> 输出重定向:会将原来文件的内容覆盖
2)>> 追加:不会覆盖原来文件的内容,而是追加到文件的尾部
基本语法:
1) ls -l > 文件
将 ls -l 查询出来的内容写入文件中,若文件不存在则自动创建此文件(覆盖写)
2) ls -al >> 文件
将 ls -al 查询出来的内容追加到文件末尾,若文件不存在则自动创建此文件(追加)
3) cat 文件1 > 文件2
将 文件1 的内容覆盖到文件2中
4) echo "内容" >> 文件
将 内容 追加到文件末尾
案例:
将当前日历信息 追加到 /home/mycal 文件中【cal:当前日历信息】
指令: [root@contos7 ~]# cal >> /root/mycal
[root@contos7 ~]# more mycal
总结:> 指令 和 >> 指令
1)> 指令:将 > 左侧查询结果覆盖到 > 右侧文件中
2)>> 指令:将 >> 左侧查询结果追加到 >> 右侧文件中
echo [选项] [输出内容]
案例1: 使用 echo 指令输出环境变量,输出当前的环境路径
[root@contos7 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
案例2: 使用echo 指令输出 hello,world
[root@contos7 ~]# echo "hello,world"
hello,world
head指令:显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法:
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
tail指令:输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
基本语法:
tail 文件 (功能描述:查看文件后10行内容)
tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文档的所有更新,经常使用)
案例: 实时监控 mydate.txt, 当文件有变化时,是否可以看到。
1.开两个XShell窗口
2.在第一个窗口输入指令 tail -f mydate.txt 进行实时追踪此文件
3.在第二个窗口输入指令 ls -la >> mydate.txt,将内容追加到 mydate.txt 文件中
4.在第一个窗口中实时监控 mydate.txt 有没有变化,如果有变化,就会看到
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
案例1: 在/home 目录下创建一个软链接 linkToRoot,链接到 /root 目录
[root@contos7 home]# ln -s /root linkToRoot
[root@contos7 home]# ll
lrwxrwxrwx. 1 root root 5 Jun 19 23:59 linkToRoot -> /root
案例2: 删除软链接 linkToRoot
[root@contos7 home]# rm -rf linkToRoot
细节:删除软链接 linkToRoot 时,后面不要带 /
细节说明
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
history (功能描述:查看已经执行过历史命令)
案例1: 显示所有的历史命令
[root@contos7 home]# history
1 ll
2 cd /home
案例2: 显示最近使用过的10个指令。
history 10
案例3:执行历史编号为5的指令
!5
date指令:显示当前日期
基本语法:
1) date
(功能描述:显示当前时间)
2) date +%Y
(功能描述:显示当前年份)
3) date +%m
(功能描述:显示当前月份)
4) date +%d
(功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S"
(功能描述:显示年月日时分秒)
date指令:设置日期
基本语法:date -s 字符串时间
案例: 练习以上指令,并设置系统当前时间,比如设置成 2020-11-11 11:22:22
[root@contos7 ~]# date
Sat Jun 20 12:15:33 CST 2020
[root@contos7 ~]# date +%Y
2020
[root@contos7 ~]# date "+%Y-%m-%d %H:%M:%S"
2020-06-20 12:15:41
[root@contos7 ~]# date -s "2020-11-11 11:22:22"
Wed Nov 11 11:22:22 CST 2020
[root@contos7 ~]# date
Wed Nov 11 11:22:35 CST 2020
注意:修改时间后别忘了把时间修改回当前时间
cal [选项]
(功能描述:不加选项,显示本月日历)案例1: 显示当前日历
[root@contos7 ~]# cal
June 2020
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
案例2: 显示2020年日历
[root@contos7 ~]# cal 2020
find指令:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
基本语法:find [搜索范围] [选项]
选项说明:
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件(可用 * 通配符) |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
案例1: 按文件名:根据名称查找/home 目录下的hello.txt文件
find /home -name hello.txt
find 搜索的范围 按照名字 要查找的文件
案例2:按拥有者:查找/opt目录下,用户名称为 nobody 的文件
find /opt -user nobody
案例3:查找整个linux系统下大于20m的文件(+n 大于 -n小于 n等于)
find / -size +20M
grep 指令和 管道符号 |
grep 过滤查找 ,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法:grep [选项] 查找内容 源文件
常用选项:
常用选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
案例: 请在 hello.txt 文件中,查找 "yes" 所在行【不区分大小写】,并且显示行号
[root@contos7 ~]# touch hello.txt
[root@contos7 ~]# vim hello.txt
[root@contos7 ~]# cat hello.txt | grep -ni yes
4:yes
6:Yes
8:yes
注意:hello.txt写入的内容
haha
hehe
xixi
yes
no
Yes
okok
yes
gzip 文件
(功能描述:压缩文件,只能将文件压缩为*.gz文件)gunzip 文件.gz
(功能描述:解压缩文件命令)案例1: gzip压缩, 将 /home下的 hello.txt文件进行压缩
[root@contos7 home]# gzip hello.txt
[root@contos7 home]# ll
total 4
-rw-r--r--. 1 root root 30 Jun 20 12:32 hello.txt.gz
案例2: gunzip压缩,将 /home下的 hello.txt.gz 文件进行解压缩
[root@contos7 home]# gunzip hello.txt.gz
[root@contos7 home]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 20 12:32 hello.txt
细节说明:
当使用 gzip / gunzip 对文件进行压缩 / 解压后,不会保留原来的文件
zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
基本语法:
zip [选项] XXX.zip 将要压缩的内容
(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip
(功能描述:解压缩文件)
zip常用选项:
zip常用选项 | 功能 |
---|---|
-r | 递归压缩,即压缩目录 |
unzip常用选项:
unzip常用选项 | 功能 |
---|---|
-d<目录> | 指定解压后文件的存放目录 |
案例1: 将 /home下的 所有文件进行压缩成 mypackage.zip【mypackage.zip:为压缩文件取名】
[root@contos7 home]# zip -r mypackage.zip /home/
案例2: 将 mypackge.zip 解压到 /opt/tmp 目录下
[root@contos7 home]# unzip -d /opt/tem/ mypackage.zip
tar 指令
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
基本语法:
tar [选项] XXX.tar.gz 打包的内容
(功能描述:打包目录,压缩后的文件格式.tar.gz)【XXX.tar.gz:给打包后的文件取名】
选项说明:
常用选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
案例1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
[root@contos7 home]# touch a1.txt a2.txt
[root@contos7 home]# tar -zcvf a.tar.gz a1.txt a2.txt
a1.txt
a2.txt
[root@contos7 home]# ll
-rw-r--r--. 1 root root 119 Jun 21 13:53 a.tar.gz
案例2: 将/home 的文件夹 压缩成 myhome.tar.gz
[root@contos7 home]# tar -zcvf myhome.tar.gz /home/
案例3: 将 a.tar.gz 解压到当前目录
[root@contos7 home]# rm -rf a1.txt a2.txt
[root@contos7 home]# tar -zxvf a.tar.gz
a1.txt
a2.txt
案例4: 将 myhome.tar.gz 解压到 /opt/ 目录下 【前提:指定解压到的那个目录必须要有】
[root@contos7 home]# tar -zxvf a.tar.gz -C /opt/
a1.txt
a2.txt
[root@contos7 home]# cd /opt
[root@contos7 opt]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 21 13:52 a1.txt
-rw-r--r--. 1 root root 0 Jun 21 13:52 a2.txt
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
清空之前所有测试数据,方便接下来的测试
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
ls –ahl
案例:创建一个组 police,再创建一个用户tom,将 tom 放在 police 组,然后使用 tom 来创建一个文件 ok.txt,看看情况如何
[root@contos7 ~]# groupadd police
[root@contos7 ~]# useradd -g police tom
[root@contos7 ~]# passwd tom
使用 tom 账号登录
[tom@contos7 ~]$ touch ok.txt
[tom@contos7 ~]$ ls -ahl
执行结果【ok.txt 文件的所有者是 tom】
total 12K
drwx------. 2 tom police 76 Jun 21 19:18 .
drwxr-xr-x. 3 root root 17 Jun 21 19:15 ..
-rw-r--r--. 1 tom police 18 Oct 31 2018 .bash_logout
-rw-r--r--. 1 tom police 193 Oct 31 2018 .bash_profile
-rw-r--r--. 1 tom police 231 Oct 31 2018 .bashrc
-rw-r--r--. 1 tom police 0 Jun 21 19:18 ok.txt
chown 用户名 文件名
案例:使用root 创建一个文件apple.txt ,然后将其所有者修改成 tom
[root@contos7 ~]# touch apple.txt
[root@contos7 ~]# chown tom apple.txt
结果:【apple.txt 所有者由 root 更改为 tom】
-rw-r--r--. 1 tom root 0 Jun 21 19:23 apple.txt
基本指令:groupadd 组名
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
查看文件/ 目录所在组
基本指令:ls –ahl
修改文件所在的组
基本指令:chgrp 组名 文件名
案例:使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组
[root@contos7 ~]# touch orange.txt
[root@contos7 ~]# ll
-rw-r--r--. 1 root root 0 Jun 21 19:33 orange.txt
[root@contos7 ~]# chgrp police orange.txt
[root@contos7 ~]# ll
-rw-r--r--. 1 root police 0 Jun 21 19:33 orange.txt
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
改变用户所在组:
usermod –g 组名 用户名
usermod –d 目录名 用户名 改变该用户登陆的初始目录
案例:将 tom 这个用户从原来所在组,修改到 bandit 组。
[root@contos7 ~]# groupadd bandit
[root@contos7 ~]# usermod -g bandit tom
[root@contos7 ~]# id tom
uid=1001(tom) gid=1002(bandit) groups=1002(bandit)
ls -l 中显示的内容如下:
-rw-r--r--. 1 tom root 0 Jun 21 19:23 apple.txt
0-9位说明:
1. 第0位确定文件类型(- , d , l , c , b)
-:普通文件
d:目录
l:软链接
c:字符设备【键盘、鼠标】
b:块文件【硬盘】
2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User
r:读
w:写
-:没有权限
3. 第4-6位确定所属组(同用户组的用户)拥有该文件的权限,---Group
r:读
w:写
-:没有权限
4. 第7-9位确定其他用户拥有该文件的权限 ---Other
r:读
w:写
-:没有权限
1 说明:
如果是文件,表示硬链接的数,如果是目录,则表示该目录的子目录个数【包括两个隐藏目录 .(当前) 和 ..(上一级),不递归】
tom 说明:
表示文件所有者
root 说明:
表示文件所在组
0 说明:
表示文件的大小【单位:字节】,如果是目录,显示4096
Jun 21 19:23 说明:
表示文件的最后修改时间【上级目录递归修改】
apple.txt 说明:
表示文件名
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10个字符确定不同用户能对文件干什么:
第一个字符代表文件类型:文件 (-),目录(d),链接(l)
其余字符每3个一组(rwx) 读(r) 写(w) 执行(x)
第一组rwx : 文件拥有者的权限是读、写和执行
第二组rw-: 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
可用数字表示为:
r=4,w=2,x=1 因此:rwx=4+2+1=7
1 文件:硬连接数或 或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096字节
Feb 2 09:39 最后修改日期
abc 文件名
基本说明:
通过 chmod
指令,可以修改文件或者目录的权限。
chmod u=rwx,g=rx,o=x 文件目录名
【u=rwx,g=rx,o=x中间不要加空格】chmod o+w 文件目录名
chmod a-x 文件目录名
1. 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
[root@contos7 ~]# touch abc
[root@contos7 ~]# chmod u=rwx,g=rx,o=rx abc
[root@contos7 ~]# ll
total 4
-rwxr-xr-x. 1 root root 0 Jun 21 22:01 abc
2. 给abc文件的所有者除去执行的权限,增加组写的权限
[root@contos7 ~]# chmod u-x,g+w abc
[root@contos7 ~]# ll
total 4
-rw-rwxr-x. 1 root root 0 Jun 21 22:01 abc
3. 给abc文件的所有用户添加读的权限
[root@contos7 ~]# chmod a+r abc
[root@contos7 ~]# ll
total 4
-rw-rwxr-x. 1 root root 0 Jun 21 22:01 abc
chmod u=rwx,g=rx,o=x 文件目录名
chmod 751 文件目录名
案例:将 /root/abc 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
[root@contos7 ~]# chmod 755 /root/abc
[root@contos7 ~]# ll
total 4
-rwxr-xr-x. 1 root root 0 Jun 21 22:01 abc
基本介绍:
chown newowner file
:改变文件的所有者
chown newowner:newgroup file
:改变用户的所有者和所有组
-R
:如果是目录 则使其下所有子文件或目录递归生效
案例:
1) 请将 abc 文件的所有者修改成 tom
[root@contos7 ~]# chown tom abc
[root@contos7 ~]# ll
total 4
-rwxr-xr-x. 1 tom root 0 Jun 21 22:01 abc
2) 请将 kkk 目录下所有的文件和目录的所有者都修改成tom【递归修改】
应该使用 root 操作
[root@contos7 ~]# chown -R tom kkk/
基本介绍:
chgrp newgroup file 改变文件的所有组
案例:
1) 请将 /root/abc 文件的所在组修改成 bandit
[root@contos7 ~]# chgrp bandit /root/abc
[root@contos7 ~]# ll
total 4
-rwxr-xr-x. 1 tom bandit 0 Jun 21 22:01 abc
2) 请将 /root/kkk 目录下所有的文件和目录的所在组都修改成 bandit【递归】
[root@contos7 ~]# chgrp -R bandit /root/kkk
crontab 进行 定时任务的设置
任务调度:
是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
基本语法:crontab [选项]
常用选项:
常用选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
快速入门【案例】:
设置任务调度文件:/etc/crontab
设置个人任务调度。执行 crontab –e 命令。
接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令
步骤:
1)crontab –e
2)*/1 * * * * ls –l /etc/ > /tmp/to.txt
3)当保存退出后就生效
4)在每一分钟都会自动的调用 ls –l /etc/ > /tmp/to.txt
结果:
每分钟注意观察/tmp/to.txt文件,为更好观察,可换成 >> 追加指令
参数说明:
• 5个占位符的说明:
项目 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时当中的第几分钟 | 0-59 |
第二个 * | 一天当中的第几小时 | 0-23 |
第三个 * | 一个月当中的第几天 | 1-31 |
第四个 * | 一年当中的第几月 | 1-12 |
第五个 * | 一周当中的星期几 0-7 | 0-7(0和7都代表星期日) |
• 特殊符号的说明:
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
• 特定时间执行任务案例:
时间 | 含义 |
---|---|
45 22 * * * | 在22点45分执行命令 |
0 17 * * 1 | 每周1 的17点0分执行命令 |
0 5 1,15 * * | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 | 周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱 |
案例1 :每隔1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
1)先编写一个文件 /home/mytask1.sh
date >> /tmp/mydate
2)给 mytask1.sh 一个可以执行权限
chmod 744 /home/mytask1.sh
3)crontab -e
4)*/1 * * * * /home/mytask1.sh
5)成功
案例2 :每隔1 分钟, 到 将当前日期和日历都追加到 /home/mycal 文件中
1)先编写一个文件 /home/mytask2.sh
date >> /tmp/mycal
cal >> /tmp/mycal
2)给 mytask2.sh 一个可以执行权限
chmod 744 /home/mytask2.sh
3)crontab -e
4)*/1 * * * * /home/mytask2.sh
5)成功
案例3: 每天凌晨2:00 将mysql 数据库 testdb ,备份到文件中 mydb.bak。
1)先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
2)给 mytask3.sh 一个可以执行权限
chmod 744 /home/mytask3.sh
3)crontab -e
4)0 2 * * * /home/mytask3.sh
5)成功
crond 相关指令:
1) conrtab –r
:终止任务调度。【删除所有任务调度】
2) crontab –l
:列出当前有那些任务调度
3) service crond restart
[重启任务调度]
分区方式:
1) mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性
2) gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64位以后支持gtp
原理:
1. Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
2. Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
硬盘说明
1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2. 对于IDE硬盘,驱动器标识符为“hdx~ ”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3. 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
查看所有设备挂载情况
指令:lsblk 或者 lsblk -f
结果解析:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
├─sda2 xfs d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
├─sda3 xfs 9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
├─sda4
└─sda5 swap dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
name:分区情况
FSTYPE:分区类型
UUID:唯一标识分区的40位不重复的字符串
MOUNTPOINT:挂载点
sr0:光驱
挂载的经典案例
说明:我们以增加一块硬盘为例,来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念
虚拟机添加硬盘
点击虚拟机 -》设置 -》硬盘 -》添加硬盘 -》SCSI(s) 【下一步】 -》创建新的虚拟磁盘 【下一步】 -》分配大小(2GB),将虚拟磁盘拆分成多个文件【下一步】 -》完成
添加硬盘成功后,需要重启系统
执行 lsblk
指令,观察发现多出 sdb 【新的硬盘】:
[root@contos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 2G 0 part /boot
├─sda2 8:2 0 60G 0 part /
├─sda3 8:3 0 30G 0 part /date
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 8G 0 part [SWAP]
sdb
分区:fdisk /dev/sdb
执行步骤:fdisk /dev/sdb -》m -》n -》 p -》1 -》w
[root@contos7 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First Cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks
Command (m for help):
中的部分指令解析:
指令 | 功能 |
---|---|
m | 显示命令列表 |
p | 显示磁盘分区 同 fdisk –l |
n | 新增分区 |
d | 删除分区 |
w | 写入并退出 |
说明: 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区。两次回车默认剩 余全部空间。最后输入w写入分区并退出,若不保存退出输入q
执行 lsblk -f
指令,观察 sdb :
```powershell
[root@contos7 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
├─sda2 xfs d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
├─sda3 xfs 9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
├─sda4
└─sda5 swap dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
sdb
└─sdb1
sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
```
格式化磁盘
分区指令:mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
[root@contos7 ~]# mkfs -t ext4 /dev/sdb1
执行 lsblk -f
指令,观察 sdb :
[root@contos7 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
├─sda2 xfs d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
├─sda3 xfs 9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
├─sda4
└─sda5 swap dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
sdb
└─sdb1 ext4 ecf884d8-6f11-4d14-9136-7343c3ad0763
sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
挂载
描述:将一个分区与一个目录联系起来
挂载指令:mount 设备名称 挂载目录
挂载解除指令:umount 设备名称 或者 挂载目录
先创建一个 /home/newdisk 目录,再将分区挂载到 /home/newdisk
[root@contos7 ~]# mkdir /home/newdisk
[root@contos7 ~]# mount /dev/sdb1 /home/newdisk
挂载完成,观察 sdb1、newdisk 目录中的内容
[root@contos7 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
├─sda2 xfs d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
├─sda3 xfs 9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
├─sda4
└─sda5 swap dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
sdb
└─sdb1 ext4 ecf884d8-6f11-4d14-9136-7343c3ad0763 /home/newdisk
sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
[root@contos7 ~]# cd /home/newdisk/
[root@contos7 newdisk]# ll
total 16
drwx------. 2 root root 16384 Jun 23 16:36 lost+found
产生的问题:
系统重启后,挂载失效【临时挂载】
设置可以自动挂载(永久挂载)
当你重启系统,仍然可以挂载到 /home/newdisk
步骤:
通过修改 /etc/fstab 实现挂载,添加完成后执行 mount –a
即刻生效
[root@contos7 newdisk]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jun 5 18:38:57 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/sdb1 /home/newdisk ext4 defaults 0 0
UUID=d326982c-c1da-4ec7-b9b8-ef71dca1e8ae / xfs defaults 0 0
UUID=78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot xfs defaults 0 0
UUID=9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date xfs defaults 0 0
UUID=dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 swap swap defaults 0 0
注意:只增加了这一行
/dev/sdb1 /home/newdisk ext4 defaults 0 0
[root@contos7 newdisk]# mount -a
reboot测试重启系统是否还是挂载
[root@contos7 newdisk]# reboot
取消挂载(解除挂载)
[root@contos7 home]# umount /dev/sdb1
[root@contos7 home]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
├─sda2 xfs d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
├─sda3 xfs 9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
├─sda4
└─sda5 swap dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
sdb
└─sdb1 ext4 ecf884d8-6f11-4d14-9136-7343c3ad0763
sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
查询系统整体磁盘使用情况:df -h
例:查询系统整体磁盘使用情况
[root@contos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 60G 1.2G 59G 2% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 30G 33M 30G 1% /date
/dev/sdb1 2.0G 6.0M 1.9G 1% /home/newdisk
/dev/sda1 2.0G 138M 1.9G 7% /boot
tmpfs 182M 0 182M 0% /run/user/0
查询指定目录的磁盘占用情况,默认为当前目录:du -h /目录
选项 | 含义 |
---|---|
-s | 指定目录占用大小汇总 |
-h | 带计量单位 |
-a | 含文件 |
–max-depth=1 | 子目录深度 |
–c | 列出明细的同时,增加汇总值 |
例:查询 /opt 目录的磁盘占用情况,深度为1
[root@contos7 ~]# du -ach --max-depth=1 /home
12K /home/tom
20K /home/newdisk
32K /home
32K total
查询磁盘情况-工作实用指令
root目录示例:
[root@contos7 ~]# ll
total 4
-rwxr-xr-x. 1 tom bandit 0 Jun 21 22:01 abc
-rw-------. 1 root root 1615 Jun 5 18:46 anaconda-ks.cfg
-rw-r--r--. 1 tom root 0 Jun 21 19:23 apple.txt
drwxr-xr-x. 2 tom bandit 32 Jun 21 22:14 kkk
-rw-r--r--. 1 root police 0 Jun 21 19:33 orange.txt
统计/root文件夹下文件的个数
[root@contos7 ~]# ls -l /root | grep "^-" | wc -l
4
统计/root文件夹下目录的个数
[root@contos7 ~]# ls -l /root | grep "^d" | wc -l
1
统计/root文件夹下文件的个数,包括子文件夹里的
[root@contos7 ~]# ls -lR /root | grep "^-" | wc -l
6
统计文件夹下目录的个数,包括子文件夹里的
[root@contos7 ~]# ls -lR /root | grep "^d" | wc -l
1
以树状显示目录结构:tree
/ tree [指定目录]
[root@contos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── apple.txt
├── kkk
│ ├── a.txt
│ └── b.txt
└── orange.txt
1 directory, 6 files
注意:如果没安装tree,则执行 yum install tree 指令安装tree
[root@contos7 ~]# tree
-bash: tree: command not found
[root@contos7 ~]# yum install tree
Loaded plugins: fastestmirror
Determining fastest mirrors
...
【安装中】询问安装吗,输入 y ,继续安装
...
Complete!
[root@contos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── apple.txt
├── kkk
│ ├── a.txt
│ └── b.txt
└── orange.txt
1 directory, 6 files
注意小细节:
linux 在 ping 过程中,使用 ctrl + c 快捷键结束 ping
基本语法:
ping 目的主机
(功能描述:测试当前服务器是否可以连接目的主机)
例:
测试当前服务器是否可以连接百度
[root@contos7 ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=27.7 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=22.5 ms
测试是否可以连接到 windows
在 windows 的 cmd 窗口执行指令 ipconfig
查询 ip 地址(192.168.0.100)
[root@contos7 ~]# ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_seq=1 ttl=128 time=0.815 ms
64 bytes from 192.168.0.100: icmp_seq=2 ttl=128 time=0.685 ms
测试windows是否可以连接到 VM虚拟机
执行ip addr
指令查看 CentOS7 ip地址
C:\Users\GZM>ping 192.168.153.128
正在 Ping 192.168.153.128 具有 32 字节的数据:
来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
192.168.153.128 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
指定固定的 ip
修改虚拟机中的CentOS 7系统为固定IP的配置文件
[root@contos7 network-scripts]# cd /etc/sysconfig/network-scripts/
[root@contos7 network-scripts]# ls
ifcfg-ens33 ifdown-eth ifdown-post ifdown-Team ifup-aliases ifup-ipv6 ifup-post ifup-Team init.ipv6-global
ifcfg-lo ifdown-ippp ifdown-ppp ifdown-TeamPort ifup-bnep ifup-isdn ifup-ppp ifup-TeamPort network-functions
ifdown ifdown-ipv6 ifdown-routes ifdown-tunnel ifup-eth ifup-plip ifup-routes ifup-tunnel network-functions-ipv6
ifdown-bnep ifdown-isdn ifdown-sit ifup ifup-ippp ifup-plusb ifup-sit ifup-wireless
[root@contos7 network-scripts]# vim ifcfg-ens33
解析:
# 将 IPV6….. 协议都注释;
BOOTPROTO="static" #开机协议,有dhcp及static;
ONBOOT="yes" #设置为开机启动;
DNS1=114.114.114.114 #这个是国内的DNS地址,是固定的;
IPADDR=192.168.153.129 #你想要设置的固定IP,理论上192.168.2.2-255之间都可以,请自行验证;
NETMASK=255.255.255.0 #子网掩码,不需要修改;
GATEWAY=192.168.153.2 #网关【要与VMnet8中设置的网关一致】,
# 这里是你在“2.配置虚拟机的NAT模式具体地址参数”中的(2)选择VMnet8--取消勾选使用本地DHCP--设置子网IP--网关IP设置。
修改保存后,重启网络服务 或 重启系统
service network restart 或 reboot
检验配置是否成功
① 重启之后执行 ip addr
指令
② ping www.baidu.com
③ ping 本机windows
④ 本机windows ping centos7
ps
查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数,一般使用参数 ps -aux
[root@contos7 ~]# ps
PID TTY TIME CMD
7198 pts/0 00:00:00 bash
7216 pts/0 00:00:00 ps
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消 CPU 时间 |
CMD | 正在执行的命令或进程名 |
选项 | 说明 |
---|---|
ps -a | 显示当前终端的所有进程信息 |
ps -u | 以用户的格式显示进程信息 |
ps -x | 显示后台进程运行的参数 |
[root@contos7 ~]# ps -aux | more
指令:ps –aux|grep xxx
例:查询有没有sshd服务
[root@contos7 ~]# ps -aux | grep sshd
root 6675 0.1 0.2 112756 4320 ? Ss 16:51 0:00 /usr/sbin/sshd -D
root 6826 1.2 0.2 158760 5588 ? Ss 16:51 0:00 sshd: root@pts/0
root 7232 0.0 0.0 112708 972 pts/0 S+ 16:52 0:00 grep --color=auto sshd
指令结果解析
指令 | 说明 |
---|---|
System V | 展示风格 |
USER | 用户名称 |
PID | 进程号 |
%CPU | 进程占用CPU 的百分比 |
%MEM | 进程占用物理内存的百分比 |
VSZ | 进程占用的虚拟内存大小(单位:KB) |
RSS | 进程占用的物理内存大小(单位:KB) |
TT | 终端名称,缩写 |
STAT | 进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等 |
STARTED | 进程的启动时间 |
TIME | CPU时间,即进程使用CPU的总时间 |
COMMAND | 启动进程所用的命令和参数 ,如果过长会被截断显示 |
查看进程父进程
指令:ps -ef | more
[root@contos7 ~]# ps -ef | more
UID PID PPID C STIME TTY TIME CMD
root 1 0 1 16:51 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 16:51 ? 00:00:00 [kthreadd]
root 3 2 0 16:51 ? 00:00:00 [ksoftirqd/0]
root 4 2 0 16:51 ? 00:00:00 [kworker/0:0]
root 5 2 0 16:51 ? 00:00:00 [kworker/0:0H]
root 6 2 0 16:51 ? 00:00:00 [kworker/u256:0]
root 7 2 0 16:51 ? 00:00:00 [migration/0]
字段 | 说明 |
---|---|
PID | 进程号 |
PPID | 父进程号(0:最高级进程,没有父进程) |
C | CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 |
kill
和 killall
若是某个进程执行一半需要停止时,或是已经消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill
指令来完成此项任务。
基本语法:
kill [选项] 进程号
(功能描述:通过进程号杀死进程)
killall 进程名称
(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
常用选项 | 说明 |
---|---|
- 9 | 表示强迫进程立即停止 |
案例1:踢掉某个非法登录用户
[root@contos7 home]# ps -aux | grep sshd
root 6675 0.0 0.2 112756 4320 ? Ss 16:51 0:00 /usr/sbin/sshd -D
root 6826 0.0 0.2 158760 5588 ? Ss 16:51 0:00 sshd: root@pts/0
root 7506 1.3 0.2 158760 5516 ? Ss 17:26 0:00 sshd: tom [priv]
tom 7510 0.0 0.1 158760 2328 ? S 17:26 0:00 sshd: tom@pts/1
root 7542 0.0 0.0 112708 976 pts/0 S+ 17:27 0:00 grep --color=auto sshd
[root@contos7 home]# kill 7510
案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务
案例3: 终止多个gedit 编辑器
案例4:强制杀掉一个终端