运维开发网

vmware虚拟机安装Centos7.6及常用命令

运维开发网 https://www.qedev.com 2020-12-04 13:32 出处:51CTO 作者:puppydong
01、罗列Linux的发行版linux的发行版主要有:RedHat、Fedora、suse、红旗、debian、Ubuntu、centos等。1、RedHatLinux​适用于服务器的版本是RedHatEnterpriseLinux,而由于这是个收费的操作系统,免费的版本是CentOS。该版本拥有数量庞大的用户,优秀的社区技术支持,许多创新,多媒体支持不佳,每18个月发行一个新版本。​1)Cent

01、罗列Linux的发行版

Linux的发行版主要有:RedHat、Fedora、suse、红旗、debian、Ubuntu、centos等。

1、Red Hat Linux

​ 适用于服务器的版本是Red Hat Enterprise Linux,而由于这是个收费的操作系统,免费的版本是CentOS。该版本拥有数量庞大的用户,优秀的社区技术支持,许多创新,多媒体支持不佳,每18个月发行一个新版本。

1)CentOS:(RHEL 的社区克隆版本,免费版本)

CentOS 是一个基于RED hat Linux提供的可自由使用源代码的企业级Linux发行版本,而且CentOS会定期进行更新,以便支持新的硬件,在RHEL的基础上修正了不少bug,稳定性好。这款发行版本是完全免费的。

2)Fedora Core:(由 Red Hat 桌面版发展而来,免费版本)

是由得到社区支持的、Red Hat所拥有的Fedoro项目所开发的Linux发行。Fedora包含的软件以自由及开放源码许可来发布,并旨在成为该技术领域的领先者。Fedora在专注创新、抢先集成新技术、与上游Linux社区紧密工作方面拥有良好名声。Fedora的缺省桌面是GNOME,缺省界面是GNOME Shell。其他的桌面环境,包括KDE、Xfce、LXDE、MATE、Cinnamon,也都可以获得。Fedora项目还发布Fedora的定制变体,叫做Fedora spins。它们是用多套特定的软件包来创建的,以提供可选的桌面环境,或者迎合特别的兴趣如游戏、安全、设计、科学计算、机器人等。

3)中标麒麟:中标麒麟操作系统采用强化的Linux内核,分成桌面版、通用版、高级版和安全版等,满足不同客户的要求,已经广泛的使用在能源、金融、交通、政府、央企等行业领域。中标麒麟增强安全操作系统采用银河麒麟KACF强制访问控制框架和RBA角色权限管理机制,支持以模块化方式实现安全策略,提供多种访问控制策略的统一平台,是一款真正超越“多权分立”的B2级结构化保护操作系统产品。从多个方面提供安全保障,包括管理员分权、最小特权、结合角色的基于类型的访问控制、细粒度的自主访问控制、多级安全等多项安全功能,从内核到应用提供全方位的安全保护。

4)Mandriva:最早的Mandriva开发者是基于redhat进行开发的,默认采用GNOME桌面系统,而且Mandriva将之改为KDE,当时Linux普遍比较难以安装,所以Mandriva简化了系统,具有友好的操作界面,图形配置工具,庞大的社区技术支持,不过部分版本bug较多,最新版本只先发布给Mandriva的俱乐部成员。

2、debian: ubuntu,deepin(深度),mint

1)debian:三大发行版中唯一以社区形式运作,不以商业公司形式运作。是一个致力于创建自由操作系统的合作组织。而且debian开发者所创建的操作系统中绝大部分基础工具来自于GNU工程。

2)Ubuntu 是一份完整的桌面Linux操作系统,它可免费获得,并带有社团及专业的支持。Ubuntu社团按照Ubuntu宣言里所铭记的思想而组建:软件应免费提供,软件工具应能以人们本地语种的形式可用且不牺牲任何功能,人们应拥有定制及改变他们软件的自由,这包括以任何他们认为适宜的方式。Ubuntu是一个古非洲语单词,意指对他人的博爱。Ubuntu 发行将这种博爱之心带到了软件的世界中。

3)MX Linux是基于Debian稳定分支的面向桌面的Linux发行,它是antiX及早先的MEPIS Linux社区合作的产物。它采用Xfce作为缺省桌面,是一份中量级操作系统,并被设计为优雅而高效的桌面与如下特性的结合:配置简单、高度稳定、性能可靠、占用空间不大也不小。

4)Linux Mint是一份基于Ubuntu的发行,其目标是提供一份更完整意义上的即刻可用的体验,而这通过包含浏览器插件、多媒体编码解码器、DVD播放支持、Java及其他组件来实现。它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于web的软件包安装界面。Linux Mint兼容Ubuntu软件仓库。

5)deepin是一份致力于为全球用户提供美观、易用、安全、免费的使用环境的Linux发行。它不仅仅包括对全球优秀开源产品进行的集成和配置,还开发了基于Qt5技术的全新桌面环境、系统设置中心,以及音乐播放器、视频播放器、软件中心等一系列面向普通用户的应用程序。deepin非常注重易用的体验和美观的设计,便于安装和使用,也能够很好地代替Windows系统应用于工作及娱乐等各领域。

3、slackware:

​ SUSE Linux Enterprise Server (SLES) , OpenSuse桌面

​ openSUSE项目是由 Novell 发起的开源项目,旨在推进 Linux 的广泛使用,提供了自由简单的方法来获得世界上最好用的 Linux 发行版之一:openSUSE。openSUSE 项目为 Linux开发者和爱好者提供了开始使用 Linux 所需要的一切。该项目由SUSE等公司赞助,2011年Attachmate集团收购了Novell,并把Novell和SUSE做为两个独立的子公司运营。openSUSE 操作系统和相关的开源程序会被SUSE Linux Enterprise(比如 SLES 和 SLED)使用。openSUSE对个人来说是完全免费的,包括使用和在线更新。

4、Alpine:

​ 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musllibc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有5M左右大小。

5、ArchLinux

​ 轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro

1)Manjaro Linux是快速的、用户友好的、面向桌面的、基于Arch Linux的操作系统。它的一些显著特性包括:一份直观的安装程序、自动硬件检测、稳定的滚动式发布模式、对安装多个内核的支持、用于管理图形卡的特别Bash脚本、高度的桌面可配置性。Manjaro Linux提供Xfce桌面作为核心选项,并为高级用户提供一份最小主义的Net版本。用户还可以获得社区支持的GNOME 3/Cinnamon及KDE版本。Manjaro的社区论坛可提供帮助并充满活力,用户受益其中。

6、Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件

​ Gentoo是一个基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西——你想让它成为什么,它就可以成为什么。

Linux 分支参考网站:http://futurist.se/gldt/

Linux发行版排名: https://distrowatch.com/dwres.php?resource=popularity

02、安装centos7.6操作系统

1)使用vmware12版安装centos7.6操作系统,选择自定义安装,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

2)选择Linux操作系统,并选择centos64位版本,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

3)选择安装centos7.6虚拟机的位置,并设置虚拟机的名称,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

4)选择网络连接的类型,这里使用网络地址转换NAT方式连接,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

5)指定磁盘的大小(如20GB),并将虚拟磁盘存储位单个文件,方便日后备份使用,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

6)设置Centos7.6安装介质,勾选“启动时连接”,使用ISO映像文件,选择存放的路径即可,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

7)正式安装Centos7.6操作系统,首界面选择第一项,直接安装。然后选择时区为“亚洲/上海”,时间设置为当前系统安装的北京时间,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

8)选择磁盘的分区方式,自定义配置分区,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

9)选择标准分区方式,增加/boot分区1GB,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

10)依次分给swap分区2GB,剩余空间都分配给/根分区,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

11)配置Centos7.6系统的IP地址,手动指定IP地址为192.168.209.10,网关192.168.209.2,DNS为192.168.209.2,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

12)设置网络连接为ON,开机启动,同时设置hostname主机名为dongxuexiao.magedu.com,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

13)设置root用户的密码,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

14)新建普通用户dong,并设置密码,如下图所示;

vmware虚拟机安装Centos7.6及常用命令

15)安装完成并重启后,Centos7.6安装完成,输入root用户和密码,正常登录系统,配置的IP地址也都正确,能连接外网;切换用户dong,也可以正常登陆,系统安装完毕,如下图所示。

vmware虚拟机安装Centos7.6及常用命令

03、配置环境变量

配置环境变量,实现执行history的时候可以看到执行命令的时间。

1)#直接用export设置HISTTIMEFORMAT,只能在当前用户临时生效,切换用户或注销当前用户后,均无效。
[[email protected] ~]# vim .bash_profile
export HISTTIMEFORMAT='%F_%T '

[[email protected] ~]# . .bash_profile
[[email protected] ~]# history
...略...
  306  2020-11-23_14:03:27 vim .bash_profile
  307  2020-11-23_14:03:44 . .bash_profile
  308  2020-11-23_14:03:47 history

#切换到dong用户,配置没有生效。因为.bash_profile是root用户家目录下的,当前用户下起作用。
[[email protected] ~]# su - dong
Last login: Mon Nov 23 13:42:49 EST 2020 on pts/0
[[email protected] ~]$ history
    1  ll
    2  history
...略...
[[email protected] ~]$ exit
logout
[[email protected] ~]# exit
logout
[[email protected] ~]# history
...略...
  309  2020-11-23_14:04:27 su - dong
  310  2020-11-23_14:04:36 exit
  311  2020-11-23_14:04:40 history

2)全局变量下设置HISTTIMEFORMAT
#编辑/etc/profile文件,增加HISTTIMEFORMAT行
vim /etc/profile
HISTTIMEFORMAT="%F %T "

[[email protected] ~]# . /etc/profile
[[email protected] ~]# history
...略...
  312  2020-11-23 14:05:39 vim .bash_profile
  313  2020-11-23 14:05:51 . .bash_profile
  314  2020-11-23 14:05:55 vim /etc/profile
  315  2020-11-23 14:06:12 . /etc/profile
  316  2020-11-23 14:06:15 history
[[email protected] ~]# su - dong
Last login: Mon Nov 23 14:04:27 EST 2020 on pts/0
[[email protected] ~]$ history
    1  2020-11-23 14:07:13 ll
    2  2020-11-23 14:07:13 history
    3  2020-11-23 14:07:13 exit
    4  2020-11-23 14:07:15 history
[[email protected] ~]$ exit
[[email protected] ~]# history
...略...  
  317  2020-11-23 14:07:13 su - dong
  318  2020-11-23 14:08:04 logout
  319  2020-11-23 14:08:07 history

04、Linux哲学思想

Linux的哲学思想是:

1、一切皆文件

​ 一切都是一个文件(包括硬件):是 Unix/Linux 的基本哲学之一。不仅普通的文件、目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。

2、小型,单一用途的程序

​ 程序和可执行文件不要太复杂,这样才能保证了Linux内核的高效运行。

3、链接程序,共同完成复杂的任务

​ 复杂的任务可以通过连接多个简单的程序实现复杂的功能。对于复杂的功能Linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的。

4、避免令人困惑的用户界面

​ 如windows那样出了问题一般人选择的会是重启,实在是不行的话就是重新安装系统了,因为对于windows那样不是开源的,并且用户界面比较复杂的操作,一旦系统出了问题,一般的人是根本没有办法解决的。

​ 但是Linux就不一样了,第一Linux是开源的,无论什么问题都可以通过简洁的命令行实现排错,修改系统的配置,一切都是简洁明了为基础。

5、配置数据存储在文本中

Linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,配置文件是文本形式的,只需任意一款文本编辑器修改即可。而不是类似于windows那样将保存在注册表中,并且windows的注册表需要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂。

05、总结Linux常用命令使用格式

5.1、echo

echo命令可以将后面跟的字符输出到屏幕或其他文件中。

功能:显示字符,echo会将输入的字符串交给标准输出。输出的字符串之间以空白字符隔开,并在最后加上换行符。

1)语法及选项

echo [-neE][字符串]
-E:(默认),不支持\解释功能
-n:不自动换行
-e:启用\字符的解释功能

例如:

-e:启用\字符的解释功能后,若字符串中出现如下字符,则特别加以处理,而不会将它当成一般文字输出
1)\a 发出警告声
#可以加在一些命令后面,等该命令执行完毕,报警告知。比如休眠10m后,报警。
sleep 10; echo -e "\a"

2)\n 换行且光标移到行首;
   \r 回车,即光标移到行首,但不换行
[[email protected] ~]# echo -e "a\nb"
a
b
[[email protected] ~]# echo -e "a\rb"
b

3)\t 横向插入tab;
   \v 竖向插入tab
[[email protected] ~]# echo -e "a\tb"
a       b
[[email protected] ~]# echo -e "a\tb\vc"
a       b
         c
[[email protected] ~]# echo -e "a\vb\vc"
a
 b
  c

4)\e escape,相当于\033
#\t时间\u用户\h主机名\W家目录
[[email protected] ~]# echo 'PS1="\[\e[1;32m\][\t \[email protected]\h \W]\[\e[0m\]\\$"' > /etc/profile.d/env.sh
[[email protected] ~]# . /etc/profile.d/env.sh
[12:10:54 [email protected] ~]#
[12:12:41 [email protected] ~]# echo -e '\e[43;31;1;5mmagedu\e[0m'
magedu
#其中43黄底31红字1高亮5闪烁
 \33[1m 设置高亮度 
 \33[4m 下划线 
 \33[5m 闪烁 
 \33[30m — \33[37m 设置前景色 
 \33[40m — \33[47m 设置背景色 

5)\\ 插入\字符,第一个\表示转义
[12:53:50 [email protected] ~]#echo \\       ---> echo "\\"
\
[13:08:17 [email protected] ~]#echo \\\  ##前两个\\表示转义后的\,而后一个\表示输入未完成,等待输入字符。
> abc
\abc
[13:08:26 [email protected] ~]#echo \\\\     ---> echo '\\'
\\
[13:08:34 [email protected] ~]#

2)echo显示变量

echo "$VAR_NAME"    #不能识别命令,可以识别变量,用变量值替换后显示
echo '$VAR_NAME'    #六亲不认,变量和命令都不识别,当成普通字符串;不执行,直接显示
``                  #反向单引号,和$()功能相同,变量和命令都识别,并且反引号的内容执行后,再交给单引号的命令继续执行
[12:28:32 [email protected] ~]#echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[12:31:23 [email protected] ~]#echo '$PATH'
$PATH

[12:33:33 [email protected] ~]#echo "echo $HOSTNAME"
echo centos7.6
[12:33:58 [email protected] ~]#echo 'echo $HOSTNAME'
echo $HOSTNAME
[12:34:08 [email protected] ~]#echo `echo $HOSTNAME` --->echo “centos7.6”
centos7.6

[[12:42:35 [email protected] ~]#echo "echo `hostname`"
echo centos7.6
[12:42:43 [email protected] ~]#echo 'echo `hostname`'
echo `hostname`
[12:42:46 [email protected] ~]#echo `echo `hostname``    ##为什么没有执行呢,是两个``不能一起使用吗
hostname
[12:51:23 [email protected] ~]#echo `echo $(hostname)`
centos7.6

3)echo {}

实现打印重复字符串,中间用..隔开,例如:

[01:58:35 [email protected] ~]#echo {10..1}
10 9 8 7 6 5 4 3 2 1
[02:03:19 [email protected] ~]#echo {1-10}   ##只能用..分隔
{1-10}
[02:03:35 [email protected] ~]#echo {1~10}
{1~10}
[02:03:44 [email protected] ~]#echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[02:04:16 [email protected] ~]#echo {a..Z}   ##ASCII码表中,小写字母在大写字母的后面,所以倒序显示
a ` _ ^ ]  [ Z

[02:04:26 [email protected] ~]#echo file{1..5,01,ma,_ha,-03}     ##1..5只能表示一个字符串
file1..5 file01 filema file_ha file-03
[02:04:55 [email protected] ~]#echo file{{1..5},01,ma,_ha,-03}   ##{1..5}这样才能顺序显示
file1 file2 file3 file4 file5 file01 filema file_ha file-03

步进示例:
[02:05:22 [email protected] ~]#echo {000..20..3}
000 003 006 009 012 015 018
[02:05:49 [email protected] ~]#echo {0000..20..2}
0000 0002 0004 0006 0008 0010 0012 0014 0016 0018 0020

[02:05:57 [email protected] ~]#echo file{1..5}
file1 file2 file3 file4 file5
[02:06:12 [email protected] ~]#echo file{1..5}.{txt,log}
file1.txt file1.log file2.txt file2.log file3.txt file3.log file4.txt file4.log file5.txt file5.log

5.2、screen

利用screen可以实现会话管理:新建会话或共享会话等。

注意:安装screen时,centos7系统来自base源,而centos8来自epel源

[13:15:17 [email protected] ~]#screen
-bash: screen: command not found
[13:15:23 [email protected] ~]#yum -y install screen

1)常用选项

-S [SESSION]    创建会话
-x [SESSION]    加入会话
-r [SESSION]    恢复会话
-ls 显示所有打开的会话

2)screen屏幕共享

一台电脑打开一个终端,输入screen -S 会话名称(任意指定);另一台电脑,登录同一服务器,输入screen -x 同一会话名称,就可以共享屏幕了,同步内容,远程协助。

比如:第一台电脑:screen -S xiaodong

第二台电脑:screen -x xiaodong(共享了第一台的屏幕)

1)新建一个会话窗口xiaodong
[13:44:17 [email protected] ~]#screen -S xiaodong

2)打开另一个终端,连接共享会话
[13:44:45 [email protected] ~]#screen -x xiaodong
[13:44:50 [email protected] ~]#screen -ls
There are screens on:
        24238.xiaodong  (Attached)
        10813.pts-0.centos7     (Detached)
2 Sockets in /var/run/screen/S-root.

3)输入内容,会在两个窗口中同时显示
4)ctrl+a,d可以暂时退出会话
[detached from 24238.xiaodong]
[13:45:21 [email protected] ~]#screen -r xiaodong    ##-r恢复不了会话,提示如下信息
There is a screen on:
        27743.xiaodong  (Attached)
There is no screen to be resumed matching xiaodong.
只能再次使用-x选项进入会话。

5)结束会话
[13:45:21 [email protected] ~]#exit
[screen is terminating]

5.3、date

1)Linux的两种时钟

系统时钟:由Linux内核通过CPU的工作频率进行的

硬件时钟:主板

2)时钟相关命令

clock,hwclock: 显示硬件时钟

-s, --hctosys 以硬件时钟为准,校正系统时钟

-w, --systohc 以系统时钟为准,校正硬件时钟

3)查看和设置系统时间

命令格式:
[00:17:18 [email protected] ~]#date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
常用选项:
-d
  -d, --date=STRING         display time described by STRING, not 'now'
                            ##按照格式显示日期时间

  %H   hour (00..23)
  %M   minute (00..59)
  %S   second (00..60)
  %T   time; same as %H:%M:%S       ##等同于%H:%M:%S

  %m   month (01..12)
  %d   day of month (e.g., 01)
  %y   last two digits of year (00..99) ##只显示后两位
  %Y   year                             ##显示4位  
  %F   full date; same as %Y-%m-%d      ##等同于%Y-%m-%d
  %D   date; same as %m/%d/%y           ##等同于%m/%d/%y

  %s   seconds since 1970-01-01 00:00:00 UTC    ##显示从1970年1月1日0时0分0秒起,过去了多少秒

  %w   day of week (0..6); 0 is Sunday      ##显示当前日期是本周的第几天,即星期几,0代表周日
  %W   week number of year, with Monday as first day of week (00..53)
  ## 显示当前日期是本年的第几周

例如:
1)显示系统时间
[00:26:05 [email protected] ~]#date
Mon Nov 30 00:26:09 CST 2020

2)设置系统时间
date 月日时分年.秒
注意:这样设置的时间是保存在内存中,重启后会恢复原硬件时钟的时间
[16:33:10 [email protected] ~]#clock
Mon 30 Nov 2020 04:33:15 PM CST  -0.491204 seconds
[16:33:15 [email protected] ~]#hwclock
Mon 30 Nov 2020 04:33:18 PM CST  -0.663203 seconds
[16:33:18 [email protected] ~]#date 112911292020.33  ##设置系统时间
Sun Nov 29 11:29:33 CST 2020
[11:29:33 [email protected] ~]#date
Sun Nov 29 11:29:34 CST 2020
[11:29:33 [email protected] ~]#clock
Mon 30 Nov 2020 04:33:32 PM CST  -0.115835 seconds
[11:29:37 [email protected] ~]#reboot        ##重启后恢复
[16:34:40 [email protected] ~]#date
Mon Nov 30 16:34:43 CST 2020
[16:34:43 [email protected] ~]#clock
Mon 30 Nov 2020 04:34:47 PM CST  -0.319648 seconds

3)查看硬件时钟时间,并设置与系统时间一致。
[11:29:45 [email protected] ~]#clock
Sun 29 Nov 2020 11:29:48 AM CST  -0.459900 seconds
[11:29:48 [email protected] ~]#hwclock
Sun 29 Nov 2020 11:29:54 AM CST  -0.772688 seconds
[11:29:54 [email protected] ~]#date 113016402020.33
Mon Nov 30 16:40:33 CST 2020
[16:40:33 [email protected] ~]#clock
Sun 29 Nov 2020 11:30:23 AM CST  -0.741522 seconds
[16:40:37 [email protected] ~]#clock -w
[16:40:40 [email protected] ~]#clock
Mon 30 Nov 2020 04:40:46 PM CST  -0.569316 seconds
[16:40:46 [email protected] ~]#

4)-d选项:按照格式显示日期时间
[16:18:10 [email protected] ~]#date -d 'now'
Mon Nov 30 16:19:03 CST 2020
[16:19:03 [email protected] ~]#date -d 'day'
Tue Dec  1 16:19:09 CST 2020
[16:19:22 [email protected] ~]#date -d '7 day'
Mon Dec  7 16:23:12 CST 2020
[16:23:12 [email protected] ~]#date -d '-3 day'
Fri Nov 27 16:23:21 CST 2020
[16:23:21 [email protected] ~]#date -d 'yesterday'
Sun Nov 29 16:23:53 CST 2020
[16:23:29 [email protected] ~]#date -d '1 day'
Sun Nov 29 16:24:05 CST 2020
[16:24:09 [email protected] ~]#date -d '1 day'
Tue Dec  1 16:24:19 CST 2020
[16:24:23 [email protected] ~]#date -d 'tomorrow'
Tue Dec  1 16:24:29 CST 2020
[16:28:18 [email protected] ~]#date -d '7 day' +%F_%T
2020-12-07_16:28:22

5)其他格式
[16:40:46 [email protected] ~]#date +%F_%T
2020-11-30_16:42:22
[16:42:22 [email protected] ~]#date +%F %T
date: extra operand ‘%T’
Try 'date --help' for more information.
[16:42:31 [email protected] ~]#date +"%F %T"
2020-11-30 16:42:36

[16:42:36 [email protected] ~]#date +%s      ##显示从1970年1月1日0时0分0秒起,过去了1606725772秒
1606725772

[16:43:07 [email protected] ~]#date +%W      ##显示当前日期是2020年的第48周
48
[16:43:52 [email protected] ~]#date +%w      ##显示当前日期是本周(第48周)的第1天
1

6)利用date命令实现创建包含当前日期的文件,以便区分不同时间的日志。
[16:46:14 [email protected] data]#touch `date +%F_%T`.log
[16:46:20 [email protected] data]#ll
total 0
-rw-r--r-- 1 root root 0 Nov 30 16:46 2020-11-30_16:46:20.log

[16:46:39 [email protected] data]#touch `date -d '-7 day' +%F`.log
[16:46:37 [email protected] data]#ll
total 0
-rw-r--r-- 1 root root 0 Nov 30 16:48 2020-11-23.log        ##生成以7天前的日期命名的文件
-rw-r--r-- 1 root root 0 Nov 30 16:46 2020-11-30_16:46:20.log

有趣的是,不加%F格式,会按照空格分隔生成很多文件,但为什么只有年份后面加上了.log后缀呢
[16:46:21 [email protected] data]#touch `date -d '-7 day'`.log
[16:48:19 [email protected] data]#ll
total 0
-rw-r--r-- 1 root root 0 Nov 30 16:46 16:46:37
-rw-r--r-- 1 root root 0 Nov 30 16:46 2020.log
-rw-r--r-- 1 root root 0 Nov 30 16:46 23
-rw-r--r-- 1 root root 0 Nov 30 16:46 CST
-rw-r--r-- 1 root root 0 Nov 30 16:46 Mon
-rw-r--r-- 1 root root 0 Nov 30 16:46 Nov

5.4、ifconfig

ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

备注:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在了。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

1)安装ifconfig

centos7和8最小化安装时,没有安装ifconfig命令,需要自行安装。
[[email protected] ~]# yum -y install ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No package ifconfig available.
Error: Nothing to do

[email protected] ~]# yum provides ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No matches found

[[email protected] ~]# yum search all ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
=========================================================== Matched: ifconfig ===========================================================
python36-ifcfg.noarch : Python cross-platform network interface discovery (ifconfig/ipconfig/ip)
moreutils.x86_64 : Additional unix utilities
net-tools.x86_64 : Basic networking tools
python2-psutil.x86_64 : A process and system utilities module for Python
python34-psutil.x86_64 : A process and system utilities module for Python
python36-psutil.x86_64 : A process and system utilities module for Python
##可以看到ifconfig命令包含在net-tools是基本的网络工具包中

[[email protected] ~]# yum install -y net-tools

2)ifconfig常见命令参数

[[email protected] ~]# ifconfig --help
Usage:
  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
  [add <address>[/<prefixlen>]]
  [del <address>[/<prefixlen>]]
  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]
  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]
  [outfill <NN>] [keepalive <NN>]
  [hw <HW> <address>]  [mtu <NN>]
  [[-]trailers]  [[-]arp]  [[-]allmulti]
  [multicast]  [[-]promisc]
  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]
  [txqueuelen <NN>]
  [[-]dynamic]
  [up|down] ...

##ifconfig不加选项,显示所有网卡信息,其中ens33连接外网,ens37连接内网,lo环回接口,IP地址固定为127.0.0.1
[[email protected] ~]# ifconfig -a   ##显示全部网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.209.10  netmask 255.255.255.0  broadcast 192.168.209.255
        inet6 fe80::eca0:f9cc:a120:fc3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d0:a9:c8  txqueuelen 1000  (Ethernet)
        RX packets 36705  bytes 43509632 (41.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24156  bytes 2184904 (2.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.10  netmask 255.255.255.0  broadcast 172.16.100.255
        inet6 fe80::20c:29ff:feca:8cac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ca:8c:ac  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 836 (836.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 32  bytes 2592 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

// UP:表示“接口已启用”。
// BROADCAST :表示“主机支持广播”。
// RUNNING:表示“接口在工作中”。
// MULTICAST:表示“主机支持多播”。
// MTU:1500(最大传输单元):1500字节
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

// inet :网卡的IP地址。
// netmask :网络掩码。
// broadcast :广播地址。
inet 192.168.209.10  netmask 255.255.255.0  broadcast 192.168.209.255

// 网卡的IPv6地址
inet6 fe80::eca0:f9cc:a120:fc3  prefixlen 64 scopeid 0x20<link>

// 连接类型:Ethernet (以太网) HWaddr (硬件mac地址)
// txqueuelen (网卡设置的传送队列长度)
ether 00:0c:29:d0:a9:c8  txqueuelen 1000  (Ethernet)

// RX packets 接收时,正确的数据包数。
// RX bytes 接收的数据量。
// RX errors 接收时,产生错误的数据包数。
// RX dropped 接收时,丢弃的数据包数。
// RX overruns 接收时,由于速度过快而丢失的数据包数。
// RX frame 接收时,发生frame错误而丢失的数据包数。
RX packets 36705  bytes 43509632 (41.4 MiB)
RX errors 0  dropped 0  overruns 0  frame 0

// TX packets 发送时,正确的数据包数。
// TX bytes 发送的数据量。
// TX errors 发送时,产生错误的数据包数。
// TX dropped 发送时,丢弃的数据包数。
// TX overruns 发送时,由于速度过快而丢失的数据包数。
// TX carrier 发送时,发生carrier错误而丢失的数据包数。
// collisions 冲突信息包的数目。
TX packets 24156  bytes 2184904 (2.0 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]# ifconfig -s       ##显示摘要信息(类似于 netstat -i)
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33            1500    52901      0      0 0         51861      0      0      0 BMRU
ens37            1500        6      0      0 0            22      0      0      0 BMRU
lo              65536       32      0      0 0            32      0      0      0 LRU

3)关闭启动指定网卡

[[email protected] ~]# ifconfig|grep ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
[[email protected] ~]# ifconfig ens37 down   ##关闭ens37内网网卡
[[email protected] ~]# ifconfig|grep ens37   ##查不到ens37网卡了
[[email protected] ~]# ifconfig|grep ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
[[email protected] ~]# ifconfig ens37 up     ##启动ens37内网网卡
[[email protected] ~]# ifconfig ens37 reload  ##重启ens37内网网卡

4)设置ipv4地址

为网卡配置和删除IPv4地址(临时生效,永久生效需要更改配置文件)

ens37网卡配置文件: /etc/sysconfig/network-scripts/ifcfg-ens37

1)设置ens37内网网卡IPv4地址为172.16.100.22
[[email protected] ~]# ifconfig ens37 172.16.100.22/24
[[email protected] ~]# ifconfig ens37 |grep 172.16.100.*|tr -s ' ' :|cut -d: -f3
172.16.100.22
[[email protected] ~]# ifconfig ens37 172.16.100.22 netmask 255.255.255.0        ##同上

2)单网卡添加多个地址
[[email protected] ~]# ifconfig ens37:0 172.16.100.33 netmask 255.255.255.0 up
[[email protected] ~]# ifconfig ens37:1 172.16.100.44/24 up
[[email protected] ~]# ifconfig 
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.22  netmask 255.255.255.0  broadcast 172.16.100.255
        inet6 fe80::20c:29ff:feca:8cac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ca:8c:ac  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 360 (360.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 1672 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.33  netmask 255.255.255.0  broadcast 172.16.100.255
        ether 00:0c:29:ca:8c:ac  txqueuelen 1000  (Ethernet)

ens37:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.44  netmask 255.255.255.0  broadcast 172.16.100.255
        ether 00:0c:29:ca:8c:ac  txqueuelen 1000  (Ethernet)

[[email protected] ~]# ping 172.16.100.33
PING 172.16.100.33 (172.16.100.33) 56(84) bytes of data.
64 bytes from 172.16.100.33: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from 172.16.100.33: icmp_seq=2 ttl=64 time=0.038 ms
^C
--- 172.16.100.33 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.021/0.029/0.038/0.010 ms
[[email protected] ~]# ping 172.16.100.44
PING 172.16.100.44 (172.16.100.44) 56(84) bytes of data.
64 bytes from 172.16.100.44: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 172.16.100.44: icmp_seq=2 ttl=64 time=0.033 ms

3)删除网卡地址
[[email protected] ~]# ifconfig ens37 del 172.16.100.44
[[email protected] ~]# ifconfig ens37 del 172.16.100.33
[[email protected] ~]# ifconfig
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.22  netmask 255.255.255.0  broadcast 172.16.100.255
        inet6 fe80::20c:29ff:feca:8cac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ca:8c:ac  txqueuelen 1000  (Ethernet)
        RX packets 40  bytes 2932 (2.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 4540 (4.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 4)ifconfig只是临时设置ipv4地址,配置文件中还是原来的ip地址,要恢复原来的ip地址,需要重新加载ens37网卡信息
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=172.16.100.11
NETMASK=255.255.255.0
[[email protected] ~]# nmcli c up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)

[[email protected] ~]# ifconfig
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.22  netmask 255.255.255.0  broadcast 172.16.100.255
...略...

5.5、export

设置或者显示环境变量

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于本次登陆操作(下次登录操作系统的时候,上次登录时的export就不能用了)。

1)语法

export [-fnp][变量名称]=[变量设置值]

参数说明

-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

实例:

[09:16:56 [email protected] ~]#export -p     ##列出当前shell定义的环境变量
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="centos7.6"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;  ...略...  36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="10.0.8.97 52908 22"
declare -x SSH_CONNECTION="10.0.8.97 52908 192.168.209.11 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="20"
[09:28:10 [email protected] ~]#echo $HOME
/root
[09:28:23 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[09:45:03 [email protected] ~]#echo $HOSTNAME
centos7.6

2)环境变量临时生效

临时生效,而且只针对当前登录用户。

export 变量名=变量值
1)PATH路径临时变量
export PATH=$PATH:/data/bin
[09:37:04 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  ##系统自带路径
[09:32:49 [email protected] ~]#export PATH=$PATH:/data/bin       ##增加的自定义路径
[09:37:04 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/data/bin    

2)定义变量后,非登录切换到普通用户目录下,可以使用自定义的变量
[09:54:18 [email protected] ~]#export MY_PATH=/data
[09:55:22 [email protected] data]#echo $MY_PATH
/data
[09:55:43 [email protected] data]#su dong        ##非登录式切换到dong用户下
[09:55:51 [email protected] data]$echo $MY_PATH  ##可以使用自定义变量
/data
[09:56:00 [email protected] data]$export A="hello"       ##dong用户下设置一个A变量
[09:56:23 [email protected] data]$echo $A
hello
[09:56:31 [email protected] data]$su -           ##切换回root用户
Password:
Last login: Tue Dec  1 09:16:47 CST 2020 from 10.0.8.97 on pts/0
[09:56:37 [email protected] ~]#echo $A           ##切换回后,变量均无法使用

[09:56:41 [email protected] ~]#echo $MY_PATH

3)定义变量后,登录式切换到普通目录下,不可以使用自定义的变量

[09:57:01 [email protected] ~]#export A="hello world"
[09:57:21 [email protected] ~]#echo $A
hello world
[09:57:28 [email protected] ~]#su - dong
Last login: Tue Dec  1 09:55:51 CST 2020 on pts/0
[09:57:33 [email protected] ~]$echo $A

[09:59:33 [email protected] ~]$su -
Password:
Last login: Tue Dec  1 09:56:37 CST 2020 on pts/0
[09:59:39 [email protected] ~]#echo $A

[09:59:42 [email protected] ~]#

4)其他变量定义
[10:20:04 [email protected] ~]#export B=hello world
[10:20:15 [email protected] ~]#echo $B
hello
[10:22:05 [email protected] ~]#export D=`hostname`
[10:22:13 [email protected] ~]#echo $D
centos7.6
[10:22:17 [email protected] ~]#export E=$(whoami)
[10:23:53 [email protected] ~]#echo $E
root

5)定义环境变量赋值
[10:24:16 [email protected] ~]#export A=100
[10:26:55 [email protected] ~]#export B=5
[10:27:38 [email protected] ~]#echo "$A * $B"|bc
500

3)永久生效,但只对当前登陆用户生效

执行 vim ~/.bash_profile 修改文件中 PATH 一行,将 /data/bin 加入到 PATH=$PATH:$HOME/bin 一行之后(注意以冒号分隔),保存文件并退出,执行 source ~/.bash_profile 使其生效,这种方法也只对当前登陆用户生效。

#自定义路径前的系统默认路径
[10:47:07 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#将自定义的路径添加到~/.bash_profile文件的PATH路径后
[10:47:49 [email protected] ~]#cat ~/.bash_profile
...省略...

PATH=$PATH:$HOME/bin:/data/bin      ##将自定义的路径添加到PATH后面

export PATH
#export HISTTIMEFORMAT="%F_%T "

[10:58:22 [email protected] ~]#source .bash_profile  ##使配置生效
[10:58:30 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/data/bin

##切换到其他用户查看,变量是否生效
[10:58:35 [email protected] ~]#su - dong
Last login: Tue Dec  1 10:57:41 CST 2020 on pts/0
[10:59:59 [email protected] ~]$echo $PATH        ##其他用户无法使用root用户的自定义路径/data/bin
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dong/.local/bin:/home/dong/bin

##切换回root用户,变量依然有效
[11:01:03 [email protected] ~]$su -
Password:
Last login: Tue Dec  1 10:57:55 CST 2020 on pts/0
Last failed login: Tue Dec  1 11:01:02 CST 2020 on pts/0
There was 1 failed login attempt since the last successful login.
[11:01:07 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/data/bin

4)永久生效,对所有系统用户生效

修改 /etc/profile 文件,在文件末尾加上如下两行代码

PATH=$PATH:/data/bin

export PATH

最后执行命令 source /etc/profile 或执行点命令 ./profile 使其修改生效。

[11:08:33 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[11:08:38 [email protected] ~]#vim /etc/profile
...省略...
#最后两行添加
PATH=$PATH:/data/bin 
export PATH

[11:10:45 [email protected] ~]#source /etc/profile
[11:10:53 [email protected] ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data/bin
[11:11:00 [email protected] ~]#su - dong
Last login: Tue Dec  1 10:59:59 CST 2020 on pts/0
[11:11:04 [email protected] ~]$echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/data/bin:/home/dong/.local/bin:/home/dong/bin
[11:11:11 [email protected] ~]$

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号