获取VMware
(1)VMware 15.1 官方获取地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.1.0-13591040.exe
CentOS 镜像获取
(1)获取
CentOS 7官方下载地址:https://www.centos.org/download/
Centos国内下载源
http://man.linuxde.net/download/CentOS
http://mirrors.btte.net/centos/7/isos/x86_64/
http://mirrors.cn99.com/centos/7/isos/x86_64/
http://mirrors.sohu.com/centos/7/isos/x86_64/
CentOS 7提供了三种ISO镜像文件的下载:
DVD ISO 标准安装版,一般下载这个就可以了(推荐)
Everything ISO 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
Minimal ISO 精简版,自带的软件最少
以下针对各个版本的ISO镜像文件,进行一一说明:
CentOS-7.0-x86_64-DVD-1503-01.iso 标准安装版,一般下载这个就可以了(推荐)
CentOS-7.0-x86_64-NetInstall-1503-01.iso 网络安装镜像(从网络安装或者救援系统)
CentOS-7.0-x86_64-Everything-1503-01.iso 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
CentOS-7.0-x86_64-GnomeLive-1503-01.iso GNOME桌面版
CentOS-7.0-x86_64-KdeLive-1503-01.iso KDE桌面版
CentOS-7.0-x86_64-livecd-1503-01.iso 光盘上运行的系统,类拟于winpe
CentOS-7.0-x86_64-minimal-1503-01.iso 精简版,自带的软件最少
(2)虚拟机的网络连接三种形式
(3)终端输入密码
Centos 开机后,登录时无法输入密码怎么解决?
因为:centos输入密码是不显示的,正常输入点击回车即可(注意查看键盘numlock 是否打开)
正常进入的样子↓↓↓
(4)密码输错被锁定解决方法
解决方法
解决方法二
终端
图形终端
虚拟终端(ctrl+alt+F1-F6开启) /dev/tty# 查看当前终端
物理终端
设备终端
串行终端
伪终端 /dev/pts/#
查看当前终端命令【 tty 】
远程连接工具
有:xshell、putty、securecrt 等
选取 Xmanger 中的 Xshell
(1)安装好 Xmanger
(2)打开 Xshell 先到Linux系统找到 ip地址
【查看ip地址命令】ifconfig 或者 ip addr 或者简写成 ip a
【xshell连接到虚拟机】ssh 自己的ip地址 或者 ssh@用户名 自己ip地址
(3)查看系统支持的shell
(3)xshell中的常用快捷键
使用xshell中的复制粘贴快捷键
复制:Ctrl+Insert
粘贴:ShIft+Insert
或者:直接使用鼠标中键
粘贴:鼠标中键
Ctrl+D 快速退出
用来在linux系统上的一个接口,用来将用户的输入发送给操作系统去执行,并把得到的结果输出出来
【查看系统支持的shell】 cat /etc/shells
【切换shell】 chsh -s shell
【查看当前运行的shell】 echo $SHELL
[root@localhost ~]#
# 超级管理员
$ 普通用户
[用户@主机名 目录]命令提示符
永久生效的方法:echo 'PS1="\[\e[1;30;35m\][\u@\h \W]\\$\[\e[0m\]"' >> /etc/profile.d/ps.sh
(其中最后ps 为自定义的名称,后缀sh必须一致)
写完命令后直接回车就可以
type 查看命令的类型
which 查找命令的路径
alias 【直接列出了系统里面所有的别名】
alias cdetc='cd /etc' 【设置别名】
unalias cdetc 【取消别名】
#让命令一致生效
#对当前用户
[root@localhost ~]#echo "alias cdetc='cd /etc'" >> .bashrc
#对所有的用户都生效
echo "alias cdetc='cd /etc'" >> /etc/bashrc
ls 相当于list
" " 可以打印变量的值
’ ’ 引号里面写什么就打印什么
[root@localhost ~]#date
Wed May 20 06:54:17 CST 2020
[root@localhost ~]#date +%F
2020-05-20
[root@localhost ~]#date +%H 【24小时制的时】
06
[root@localhost ~]#date +%I 【12小时制的时】
06
[root@localhost ~]#date +%y 【年】
20
[root@localhost ~]#date +%m 【月】
05
[root@localhost ~]#date +%d 【日】
20
[root@localhost ~]#date +%M 【分钟】
56
[root@localhost ~]#date +%S 【秒】
26
[root@localhost ~]#date +%a 【星期缩写】
Wed
[root@localhost ~]#date +%A 【星期全称】
Wednesday
[root@localhost ~]#date +%T 【完整时间】
06:58:22
[root@localhost ~]#date +%Y-%m-%d
2020-05-20
[root@localhost ~]#date +%y-%m-%d
20-05-20
[root@localhost ~]#date +%s 【时间戳时间】
1589929209
[root@localhost ~]#date +%W 【一年中的第几周】
20
[root@localhost ~]#timedatectl 【查看时区】
Local time: Wed 2020-05-20 07:06:55 CST
Universal time: Tue 2020-05-19 23:06:55 UTC
RTC time: Tue 2020-05-19 23:06:55
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@localhost ~]#timedatectl
[root@localhost ~]#timedatectl set-timezone Asia/Shanghai
cal 【展示当月的日历】
cal -y 【展示当年的日历】
cal -y 【显示#年的日历】
shutdown 默认是一分钟之后关机
shutdown -c 取消
shutdown -r 重启
-r 后指定时间
- now 立即
hh:mm 【直接写 时间】
+# 表示多长时间以后重启,一般是分钟
reboot 重启
-p 切断电源
init 6 【重启】
init 0 【0】
poweroff 【关机】
command [options] [args...]
选项:启用或者禁用某些功能的
短选项:-a
长选项:--all
参数:命令的作用对象,一般情况是目录,用户等等
注意:
多个选项及参数和命令之间需要用空格隔开
命令后加ctrl+c 来取消命令的执行
用 ;分号来隔开同时执行的多个命令
使用\来将命令切换成多行
tab键
内部命令:
外部命令:shell 会根据环境变量从左至右依次查找,找到第一个匹配的则返回
目录补全
输入什么就输出什么,并且加入了一个换行符
[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
可以通过键盘上的箭头来查找之前执行过的命令
通过history来获取之前执行过的命令记录
执行刚才执行过的命令
使用!:0来执行上一条命令(去掉参数)
!# 来执行history中的第多少条命令
[root@localhost ~]#!123
which cp
alias cp='cp -i'
/usr/bin/cp
!要查找的字符 【从下往上直接查找最近的一条包含string的命令】
ctrl+r 【搜索之前执行过的命令】
ctrl+g 【退出待定的搜索】
调用上一个命令的参数
history 的命令历史
history # 【显示最后的 #条命令】
history -c 清空命令记录
当用户登录系统之后,会读取家目录下的.bash_history文件
[root@localhost etc]#cd ~
[root@localhost ~]#ls .bash_history
.bash_history
[root@localhost ~]#cat .bash_history
ctrl+l 清屏,相当于clear
ctrl+s 锁定屏幕,(挂起)
ctrl+q 解开锁定,(解挂)
ctrl+c 总之命令,(用于某些一直执行的命令,或者待输入后需要主动结束命令,如:top、tr )
ctrl+d 退出,(和ctrl+c 类似)
ctrl+a 移动到命令的行首 相当于home
ctrl+e 移动到行尾,相当于end
ctrl+xx 光标在命令行首和光标之间来回移动
ctrl +k 删除光标到结尾位置的字符
ctrl +u 删除光标到行首的字符
alt+r 删除正行
需要注意,alt会跟别的快捷键冲突
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
# 含义:
[] 代表可选,即可输也可不输
... 表示一个列表
[-u|--utc|--universal] 任选其中一个
-lh 代表-l -h
date 052805271980 设置时间
ntpdate time.windows.com 自动与时间服务器同步时间
man 5 passwd 【需要指定 文档中有的 章节 和其内容】
箭头来控制输出
回车输出下一行
空格切换到下一屏
章节
1 用户的命令
2 系统的调用
3 c库的调用
4 设备文件或者特殊文件
5 配置文件
6 游戏
7 杂项
8 管理类的命令
9 linux内核API
绝对路径:
相对路径:
[root@localhost network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-ens33
ifcfg-ens33
[root@localhost network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts
change directory
可以使用相对路径,也可以使用绝对路径
[root@localhost etc]#cd
[root@localhost ~]#
[root@localhost ~]#cd - 可以快速的回到上一次的目录
/etc/sysconfig/network-scripts
[root@localhost network-scripts]#cd -
/root
print working directory
[root@localhost etc]#pwd
/etc
[root@localhost etc]#cd sysconfig/network-scripts/
[root@localhost network-scripts]#pwd
/etc/sysconfig/network-scripts
list 列出指定目录的文件或者文件夹
语法:ls [OPTION]… [FILE]…
ls -a 列出所有的文件(包括隐藏文件)
ls -l =ll 使用长格式来显示文件相关信息
ls -R 【递归显示】
ls -r 【r代表 reverse 倒序显示 】
ls -d 显示目录本身
ls -1(数字1) 竖着显示文件
ls -lS 根据文件的大小来排序(默认降序)
ls -lSr 根据文件的大小,升序排序
ls -d */ 显示当前目录下的目录,不能指定目录
ls -ltu 【按照atime时间排序】
ls -lh 以人类易读的方式显示
touch 用来修改时间和创建文件
如果文件存在的话,则修改时间
如果不存在,则创建文件
a{1..10} 命令展开 【注意是大括号】
a{1..10..2} 指定步长
seq 1 10
seq 1 2 10 【中间的 是 步长】
`date`
$(date)
[root@localhost studytest]#stat aa
File: ‘aa’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 2451158 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-05-23 08:02:10.179131830 +0800
Modify: 2020-05-23 08:02:10.179131830 +0800
Change: 2020-05-23 08:02:10.179131830 +0800
Birth: -
访问时间:access 读取文件内容 atime
修改时间:Modify 改变文件的内容 mtime
改变时间:change 改变文件的内容 ctime
Usage: cp [OPTION]... [-T] SOURCE(源文件) DEST(目标文件)
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
常用参数
-i 覆盖之前提示
-n 不覆盖存在的文件
-r 递归复制,复制目录及目录下的所有文件
-rf 强制
-rv 显示复制过程
-b 在覆盖之前,对源文件做备份
cp --backup=numbered 1.cfg 2.cfg 覆盖文件,备份文件添加上数字
-p 保留原来的属性
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
-i 交互式
-f 强制
-b 覆盖前做备份
-v 显示进度
rm [OPTION]... FILE...
-i 交互式
-f 强制删除
-r 递归删除
-rf 递归强制删除,即不过问,直接删除文件夹或文件
# > access.log
# : > access.log
# true > access.log
# cat /dev/null > access.log
使用 cp命令 复制 /dev/null 的内容到某个文件来达到清空该文件的目的
# cp /dev/null access.log
下面的命令中, if 代表输入文件,of 代表输出文件
# dd if=/dev/null of=access.log
# echo "" > access.log
或者
# echo > access.log
注意:应该记住空字符串并不等同于 null 。字符串表明它是一个具体的事物,只不过它的内容可能是空的,但 null 则意味着某个事物并不存在。基于这个原因,当你将 echo命令 的输出作为输入重定向到文件后,使用cat命令来查看该文件的内容时,你将看到一个空白行(即一个空字符串)。要将 null 做为输出输入到文件中,你应该使用 -n 选项,这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。
# echo -n "" > access.log
# truncate -s 0 access.log
1)先建立一个空目录
mkdir /data/blank
2)用rsync删除目标目录
rsync--delete-before -d /data/blank/ /var/spool/clientmqueue/
# 这样目标目录很快就被清空了
快速删除大文件:
1)创建空文件
touch /data/blank.txt
2)用rsync清空文件
rsync-a --delete-before --progress --stats /root/blank.txt /root/nohup.out
为什么rsync能够快速删除大文件?
1)rm命令大量调用了lstat64和unlink,可以推测删除每个文件前都从文件系统中做过一次lstat操作。过程:正式删除工作的第一阶段,需要通过getdirentries64调用,分批读取目录(每次大约为4K),在内存中建立rm的文件列表;第二阶段,lstat64确定所有文件的状态;第三阶段,通过unlink执行实际删除。这三个阶段都有比较多的系统调用和文件系统操作。
2)rsync所做的系统调用很少:没有针对单个文件做lstat和unlink操作。命令执行前期,rsync开启了一片共享内存,通过mmap方式加载目录信息。只做目录同步,不需要针对单个文件做unlink。
另外,在其他人的评测里,rm的上下文切换比较多,会造成System CPU占用较多——对于文件系统的操作,简单增加并发数并不总能提升操作速度。
总结:频繁做减法不如直接从头来过
把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。
原文链接:https://blog.csdn.net/liuxiao723846/article/details/51626305