您的位置:首页 > 运维架构 > Linux

第一周、Linux历史及发行版本

2020-06-04 08:24 190 查看

Linux历史及发行版本

  • history命令
  • Linux哲学思想
  • 基本命令
  • init
  • hash
  • enable
  • alias
  • Linux发行版

    1991年Torvalds在GPL框架下发布类Unix的内核,可以运行Unix软件及GNU软件,由于可以免费使用,在网络上迅速的流行开来。完整的Linux操作系统由Linux内核和GNU工具组成,Linux是一款完整的类Unix操作系统。

    Linux发行版都是在Linux内核基础上进行二次编译后发布的版本

    主要发行版 代表操作系统 不同点
    Slackware SUSE 商业版 ,小众专业服务器系统
    Debian Ubuntu Ubuntu更新较快,GUI优异,易于使用
    Redhat RHEL 商业版,更新较慢,注意稳定,
    CentOS RHEL社区版,企业主要使用
    Fedora Fedora相当于RHEL的测试版,6个月更新
    Android 安卓手机 kernel+busybox(工具集)+Java虚拟机
    LFS 自制系统 根据LFS文档自制Linux操作系统

    安装Centos7.6

    centos配置

    使用VMware Workstation Pro 15软件安装系统,VMare软安装及创建Centos7.6虚拟机的过程不再描述,centos系统配置如下:

    名称 大小 备注
    内存 1G
    硬盘 200G
    / 100G mount /sda1
    /boot 1G mount /sda2
    swap 2G mount /sda3
    /data 500G mount /sda5

    安装过程

    1、点击开启此虚拟机,出现如下画面,点击Install CentOS 7 进入安装程序。

    2、本系统默认使用English进行安装,以下界面默认选择English ,点击Continue 继续安装

    3、进入如下界面,依次点击相关设置

    3.1、点击DATE & TIME ,设置Region为Asia , City 为Shanghai,点击Done确认

    3.2、点击SOFTWARE SELECTION ,选择GNOME Desktop

    3.3、 点击INSTALLATION DESTINATION ,进入后如下图,选择I will configure partitioning ,确认Done 后进入分区设置
    3.4点击+ ,选择Standard Partition

    3.5挂载点 Mount Point选择/,Desired Capacity 输入大小100G

    3.6挂载点 Mount Point选择/boot,Desired Capacity 输入大小1G

    3.7挂载点 Mount Point选择swap,Desired Capacity 输入大小2G

    3.8挂载点 Mount Point输入/data,Desired Capacity 输入大小50G

    3.9设置完成后如下图,选择Done确认

    3.10选择Accept Change ,将分区写入磁盘

    4、点击KDUMP,不选中Enable kdump ,点击Done

    5、点击NETWORK & HOSTNAME , hostname处修改为Centos7.localdomain,Ethernet 点击为ON

    6、其余设置保持默认设置,点击Begin Installation 进行安装
    7、安装过程中点击ROOT PASSWORD 设置root密码,点击USER CREATION 新增用户wang及密码,安装完成后点击Reboot 重启系统

    8、重启系统后进入界面如图,点击LICENSE INFORMATION

    8.1、进入后选中I accept the license agreement,点击Done,返回后点击 FINISH CONFIGURATION 完成系统安装

    history命令

    系统会保存用户输入的历史命令,保存在~/.bash_history文件中
    登录shell时,系统会自动读取~/.bash_history中的命令
    登录shell后新执行的命令只会记录在缓存中,用户退出时系统会自动追加至~/.bash_history中
    在shell中输入history可以查看历史命令,默认为编号+命令

    [root@localhost ~]#history
    1  cd /etc/sysconfig/network-scripts/
    2  ls
    3  ifconfig
    4  vim ifcfg-ens34
    5  systemctl restart network
    6  ifconfig
    7  init 0
    8  cd /etc/sysconfig/network-scripts/

    history的常用参数

    参数 涵义 举例
    -c 清空历史命令 history -c
    -d 清除指定的历史命令 history -d num/comd
    n 显示最近的n条 history 10

    调用history方法

    命令 涵义
    重复上一条命令
    !! 重复上一条命令
    !-1 重复上一条命令
    Ctrl+p 重复上一条命令
    !:0 执行前一条命令(去除参数)
    !n 执行history命令输出对应序号n的命令
    !-n 执行history历史中倒数第n个命令

    history环境变量

    环境变量 涵义 默认
    HISTSIZE 命令历史记录的条数 1000
    HISTFILESIZE 命令历史文件记录历史的条数 1000
    HISTCONTROL ignoredups 忽略重复的命令
    HISTTIMEFORMAT=“%F %T “ 显示时间
    HISTFILE 历史命令存放文件 ~/.bash_history
    HISTCMD 当前历史命令条数
    [root@localhost ~]#echo $HISTCMD
    539
    [root@localhost ~]#echo $HISTCONTROL
    ignoredups
    [root@localhost ~]#echo $HISTFILE
    /root/.bash_history
    [root@localhost ~]#echo $HISTFILESIZE
    1000
    [root@localhost ~]#echo $HISTSIZE
    1000

    修改history环境变量,将HISTTIMEFORMAT=“%F %T “写入在/etc/profile 或 ~/.bash_profile以.sh结尾的文件中,执行history时可以看见执行时间

    [root@localhost ~]#nano /etc/profile.d/env.sh
    [root@localhost ~]#cat /etc/profile.d/env.sh
    HISTTIMEFORMAT='%F %T '
    [root@localhost ~]#.  /etc/profile.d/env.sh
    [root@localhost ~]#history 10
    504  2020-04-14 21:18:44 ln -s ../data/mysql /etc/myql.lin
    505  2020-04-14 21:18:53 ll -i /etc/myql.lin
    506  2020-04-14 21:19:13 rm mysql.lin
    507  2020-04-14 21:19:19 rm mysql.link
    508  2020-04-14 21:19:24 rm myql.lin
    509  2020-04-14 22:16:08 init 0
    510  2020-04-15 19:43:58 history
    511  2020-04-15 19:44:22 cat /etc/profile.d/env.sh
    512  2020-04-15 19:45:34 history -10
    513  2020-04-15 19:45:40 history 10
    [root@localhost ~]#echo $HISTTIMEFORMAT
    %F %T

    Linux哲学思想

    一切都是一个文件(包括硬件)
    小型,单一用途的程序
    链接程序,共同完成复杂的任务
    避免令人困惑的用户界面
    配置数据存储在文本中
    完成比完善更重要

    1、一切都是一个文件:是 Unix/Linux 的基本哲学之一。不仅普通的文件,硬件在 Unix/Linux 中也是以文件的形式存在;通过修改文件进行配置
    2、小型,单一用途的程序:程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行
    3、连接程序,共同完成复杂功能:复杂的任务可以通过连接多个简单的程序实现复杂的功能。对于复杂的功能linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的
    4、避免令人困惑的用户界面:Linux一般使用CLI界面进行配置系统,Linux底层运行的是内核,其他所有应用都跑在内核上,包括图形桌面(图形界面也会占用大量系统资源),win系统桌面死机就只有重启系统,Linux桌面系统死机可以切换到CLI界面进行处理,一切都是简洁明了为基础为了电脑的性能。
    5、配置数据存储在文本中:linux所有的配置都存放在系统配置文件当中,无论什么配置修改都只需修改其配置文件即可。
    6、 完成比完善更重要:先完成任务再想办法进行优化

    基本命令

    echo
    echo
    功能:显示字符
    语法:echo [-neE][字符串]
    说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号,可以打印出变量值
    参数 涵义
    -E (默认)不支持 \ 解释功能
    -n 不自动换行
    -e 启用 \ 字符的解释功能(识别颜色)
    [root@localhost ~]#echo -e "my hostname is \e[1;34m`hostname`\e[\0m"
    my hostname is localhost.localdomain
    [root@localhost ~]#echo  "my hostname is \e[1;34m`hostname`\e[\0m"
    my hostname is \e[1;34mlocalhost.localdomain\e[\0m
    [root@localhost ~]#echo `hostname`
    localhost.localdomain
    [root@localhost ~]#echo -n `hostname`
    localhost.localdomain[root@localhost ~]#
    [root@localhost ~]#echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    screen
    创建一个会话,让使用该系统的用户可以其加入该会话
    命令 涵义
    screen –S [SESSION] 创建新screen会话
    screen –x [SESSION] 加入screen会话
    exit 退出并关闭screen会话
    Ctrl+a,d 剥离当前screen会话
    screen -ls 显示所有已经打开的screen会话
    screen -r [SESSION] 恢复某screen会话
    [root@localhost ~]#screen -S help
    [root@localhost ~]#screen -ls
    There is a screen on:
    3539.help	(Attached)
    1 Socket in /var/run/screen/S-root.
    [root@localhost ~]#screen -x help
    [detached from 3539.help]  Ctrl+a,d 剥离当前会话,screen -x help重新加入
    date
    显示和设置系统时间
    Usage: date [OPTION]... [+FORMAT]
    or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  设置时间

    命令参数

    -d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
    -s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
    -u:显示GMT;
    --help:在线帮助;
    --version:显示版本信息。

    日期格式字符串列表

    %H 小时(以00-23来表示)。
    %I 小时(以01-12来表示)。
    %K 小时(以0-23来表示)。
    %l 小时(以0-12来表示)。
    %M 分钟(以00-59来表示)。
    %s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
    %T 时间(含时分秒,小时以24小时制来表示)。
    %b 月份英文名的缩写。
    %B 月份的完整英文名称。
    %d 日期(以01-31来表示)。
    %D 日期(含年月日)。
    %F 显示YY-MM-DD 。
    %j 该年中的第几天。
    %m 月份(以01-12来表示)。
    %W 一年的第几个星期(00..53,星期一为第一天)
    %X  相当于%HH%MM%SS。
    %y 年份(以00-99来表示)。
    %Y 年份(以四位数来表示)。
    MM 月份(必要)
    DD 日期(必要)
    hh 小时(必要)
    mm 分钟(必要)
    ss 秒(选择性)
    [root@localhost ~]#date
    2020-04-15 21:09:22
    [root@localhost ~]#date -s "20210415"
    2021-04-15 00:00:00
    [root@localhost ~]#date -d "2 days"
    2021-04-17 00:02:55
    [root@localhost ~]#date -d "-2 days"
    2021-04-13 00:02:59
    clock/hwclock
    显示硬件时间
    -s, --hctosys 以硬件时钟为准,校正系统时钟
    -w, --systohc 以系统时钟为准,校正硬件时钟
    [root@localhost ~]#clock
    Wed 15 Apr 2020 08:41:54 PM EDT  -0.585530 seconds
    [root@localhost ~]#date 041610302021.00
    Fri Apr 16 10:30:00 EDT 2021
    [root@localhost ~]#date
    Fri Apr 16 10:30:15 EDT 2021
    [root@localhost ~]#clock -s
    [root@localhost ~]#date
    Wed Apr 15 20:42:53 EDT 2020
    [root@localhost ~]#date +'%F %T'
    2020-04-15 20:43:13
    ifconfig

    查看系统网络信息

    [root@localhost ~]#ifconfig ens33
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.13  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 240e:330:35b7:6800:d2fd:f442:f258:9263  prefixlen 64  scopeid 0x0<global>
    inet6 fe80::ba4f:7148:1a7c:3ba  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:4e:42:bf  txqueuelen 1000  (Ethernet)
    RX packets 182  bytes 18044 (17.6 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 216  bytes 20626 (20.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    export

    用于设置或显示环境变量

    [root@localhost ~]#export
    declare -x DISPLAY="localhost:10.0"
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="localhost.localdomain"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"
    eclare -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 SELINUX_LEVEL_REQUESTED=""
    declare -x SELINUX_ROLE_REQUESTED=""
    declare -x SELINUX_USE_CURRENT_RANGE=""
    declare -x SHELL="/bin/bash"

    定义环境变量

    [root@localhost ~]#export NUM=7
    [root@localhost ~]#echo $NUM
    7
    [root@localhost ~]#bash
    [root@localhost ~]#echo $NUM
    7
    关机命令
    关机:halt, poweroff
    重启:reboot
    -f: 强制,不调用shutdown
    -p: 切断电源
    shutdown
    shutdown [OPTION]... [TIME] [MESSAGE]
    -r: reboot
    -h: halt
    -c:cancel
    TIME:无指定,默认相当于+1(CentOS7)
    now: 立刻,相当于+0
    +m: 相对时间表示法,几分钟之后;例如 +3
    hh:mm: 绝对时间表示,指明具体时间
    [root@localhost ~]#shutdown -r +3
    Shutdown scheduled for Wed 2020-04-15 21:09:34 EDT, use 'shutdown -c' to cancel.
    [root@localhost ~]#
    Broadcast message from root@localhost.localdomain (Wed 2020-04-15 21:06:34 EDT):
    
    The system is going down for reboot at Wed 2020-04-15 21:09:34 EDT!
    
    [root@localhost ~]#shutdown -c
    
    Broadcast message from root@localhost.localdomain (Wed 2020-04-15 21:06:46 EDT):
    
    The system shutdown has been cancelled at Wed 2020-04-15 21:07:46 EDT!
    init
    命令 涵义
    init 0 关机
    init 6 重启
    init 3 切换为CLI
    init 5 切换为GUI
    init 1 切换为救援模式(单机模式)
    [root@localhost ~]#runlevel
    N 5
    [root@localhost ~]#init 3
    [root@localhost ~]#runlevel
    5 3
    [root@localhost ~]#init 1
    
    Broadcast message from root@localhost.localdomain on pts/0 (Wed 2020-04-15 21:10:51 EDT):
    
    The system is going down to rescue mode NOW!
    hash
    系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
    hash 显示hash缓存
    hash –l 显示hash缓存,可作为输入使用
    hash –d name 清除name缓存
    hash –r 清除缓存
    enable
    查看内部命令
    help 内部命令列表
    enable cmd 启用内部命令
    enable –n cmd 禁用内部命令
    enable –n 查看所有禁用的内部命令
    [root@localhost /data]#enable
    enable .
    enable :
    enable [
    enable alias
    enable bg
    enable bind
    enable break
    enable builtin
    enable caller
    enable cd
    enable command
    enable compgen
    [root@localhost /data]#enable -n break
    [root@localhost /data]#enable
    enable .
    enable :
    enable [
    enable alias
    enable bg
    enable bind
    enable builtin
    enable caller
    enable cd
    enable command
    enable compgen
    [root@localhost /data]#enable -n
    enable -n break
    alias
    定义和显示别名
    alias NAME='VALUE'
    [root@localhost /data]#alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@localhost /data]#alias e=hostname
    [root@localhost /data]#e
    localhost.localdomain
    如果想永久有效,要定义在配置文件中
    仅对当前用户:~/.bashrc
    对所有用户有效:/etc/bashrc
    撤消别名:unalias
    unalias [-a] name [name ...]
    -a 取消所有别名
    如果别名同原命令同名,如果要执行原命令,可使用
    \ALIASNAME
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: