目录
Linux基础(一)
1.1linux基础
1.1.1 描述计算机的组成及其功能
计算机是由运算器、控制器、存储器、输入设备、输出设备组成
运算器:执行各种计算和逻辑运算操作
控制器:完成协调和指挥整个计算机系统的操作
储存器:暂时存储或者长期存储数据
输入设备:向计算机输入数据和信息的设备
输出设备:计算机硬件系统的终端设备
1.1.2 冯诺依曼型计算机的基本原理
计算机由运算器、控制器、存储器、输入设备和输出设备五大部件组成。 数据和程序以二进制代码形式存放在存储器中,存放的位置由地址确定。 控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个计数器控制指令的执行,控制器具有判断能力,能以数据结构为基础,选择不同的工作流程。 冯・诺依曼型计算机的基本原理的核心思想是“存储程序与程序控制”。
1.1.3 冯诺依曼体系三个特点
(1)计算机应包括运算器、存储器、控制器、输入和输出设备五大基本部件。
(2)计算机内部应采用二进制来表示指令和数据。每条指令一般具有一个操作码和一个地址码。其中操作码表示运算性质,地址码指出操作数在存储器中的地址。
(3)采用存储程序方式。将编好的程序送人内存储器中,然后启动计算机工作,计算机勿需操作人员干预,能自动逐条取出指令和执行指令。
1.1.4 服务器
- 服务器Server是计算机的一种,是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务
- 服务器按应用功能可分为:
Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、
监控服务器,程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、
域控制服务器、多媒体服务器、通讯服务器、ERP服务器等 - 服务器按外形分类:
塔式服务器、刀片式服务器、机架式服务器 - 服务器硬件组成
1.1.5 操作系统
操作系统的功能:
硬件驱动、进程管理、内存管理、网络管理、安全管理、文件管理
开发接口标准
ABI:Application Binary Interface
ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行
API:Application Programming Interface
API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译
- POSIX: Portable Operating System Interface;IEEE在操作系统上定义的一系列API标准
POSIX兼容的程序可在其它POSIX操作系统编译执行- 运行程序格式:
Windows: EXE, .dll(dynamic link library),.lib
Linux: ELF, .so(shared object), .a
- 运行程序格式:
- 用户空间和内核空间
- 用户空间:User space
用户程序的运行空间。为了安全,它们是隔离只能执行简单的运算,不能直接调用系统资源
内核发出指令 - 内核空间:Kernel space
是 Linux 内核的运行空间可以执行任意命令,调用系统的一切资源
- 用户空间:User space
1.16 Linux的发行版
- 什么是linux发行版?
Linux发行版(英文名称是Linux Distribution)。Linux实际上是一种开放源代码的操作系统内核,通常我们说的Linux指的是基于Linux内核的操作系统。Linux操作系统包括Linux内核和Linux用户态程序,Linux内核和Linux用户态程序都是开放源代码的,绝大多数软件代码遵循GPL协议,任何人拿到这些代码都可以对这些代码进行修改和分发。由于Linux上代码的高度自由,很多公司和组织都推出了自己的Linux操作系统,这些Linux操作系统我们就叫做Linux发行版。
1、debian系列
Ubuntu:基于Debian开发的开源Linux操作系统,主要针对桌面和服务器。
Linux mint:基于Debian和Ubuntu的Linux发行版,致力于桌面系统对个人用户每天的工作更易用,更高效,且目标是提供一种更完整的即刻可用体验。
2、redhat系列
rhel(redhat enterprise linux) 红帽企业版
centos(communication enterprise operation system) 社区版(rhel的代码重写版,与rhel有很好的兼容性)
fedora 最新的内核,和最新的应用,为rhel的稳定做准备。每6个月发行一个新版本
3、suse系列
基于Slackware二次开发的一款Linux,主要用于商业桌面、服务器。
SLES(SUSE LinuxEnterpriseServer(SLES):企业服务器操作系统,是唯一与微软系统兼容的Linux操作系统。
OpenSuse:由suse发展而来,旨在推进linux的广泛使用,主要用于桌面环境,用户界面非常华丽,而且性能良好。
4、其他版本有Gentoo、ArchLinux等
Gentoo采用自己独特的Portage包管理系统,吸引了许多狂热爱好者以及专业人士,强调自己编译源码,而不是直接用二进制包,这样程序运行速度更快。
ArchLinux基于KISS原则,针对i686的CPU做了优化,以.tar.xz格式打包并由包管理器进行跟踪维护,特别适合动手能力强的linux用户。
- 不同发行版之间的联系与区别?
不同发行版之间的联系:都是linux核心+gnu组织的众多开源程序。所有发行版都是使用Linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号.修正号)。
发行版的本质区别:在于继承不同版本的内核,库、程序的组成。不同发行版几乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系统,包文件以RPM为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。)使用各自封装程序,和配套的自行研发程序。
1.17 Linux的哲学思想
Linux的哲学思想是:
1.一切皆文件,普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待。
2.文本的形式保存配置数据,所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,配置文件时文本形式的只需任意一款文本编辑器修改即可
3.单一目的的小程序,程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行。
4.组合小程序完成复杂任务,复杂的任务可以通过连接多个简单的程序实现复杂的功能。
5.尽量避免跟用户交互,目标是易于以编程方式实现自动化。
1.18 vmware虚拟机的下载与安装
windows下安装推荐使用 VMware Workstation Pro12.5版本
下载地址https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
- centos安装前准备工作:Centos6.10发行版本的获取CentOS-6.10-x86_64-bin-DVD1.iso
CentOS-6.10-x86_64-bin-DVD2.iso 两张光盘
下载地址:
http://mirrors.163.com/centos/6/isos/x86
http://mirrors.aliyun.com/centos/6/isos/x86
http://mirrors.sohu.com/centos/6/isos/x86
https://wiki.centos.org/Download
前期我们安装第一张盘。
centos6.10安装准备
/ 根目录 50G
/boot 系统内核文件 1G
/data 应用程序 30G
swap 交换分区 2G (一般为内存的2倍)
注意:所有的文件都在根目录下,/boot 和 /data文件夹虽然在根目录下,但是一般需要单独分区,其文件内容是放在其他的独立主分区内的。
1)打开安装好的VMware,点击创建新的虚拟机。
2)安装模式就选择推荐的典型就可以。
3)选择稍后安装操作系统(如选择第二个指定IOS文件,会按照系统默认的安装策略进行安装,无法进行自定义分区)
4)选择客户机操作系统
LINUX
Centos64
5)命名虚拟机
Centos6.10(这里根据自己的linux版本号填写,便于区分)
安装位置(选择centos6.10想要安装的文件夹)
6)指定磁盘容量
200G 单个文件
7)设置内存 处理器 网卡信息
内存:1G
处理器数量:2个
网络适配器:仅主机模式
添加一个网络适配器:选择桥接模式
选择CD/DVD选项,勾选启动时连接
使用ISO文件:我这里的安装镜像在E:\ISOS\CentOS-6.10-x86_64-bin-DVD1.iso,将安装光盘挂载到虚拟机。到此准备工作就做完了。
- CentOS6.10安装
1)开启虚拟机
2)选择安装模式
Install or upgrade an existing system
Install system with basic vedio driver
Rescue install system
Boot from local drive
Memory test
第一项为标准安装系统
第二项为基本显卡安装系统
第三项为救援模式安装系统
第四项为本地硬盘安装
第五项为检查系统内存状态
选择第一项 标准安装
3)检查硬件故障 (disc found)主要检查安装光盘有无问题
4) 这里选择跳过Skip
5)语言选择
6)键盘布局 English
7)设备模式选择
Basic storage Devices
Specialized storage Devices
第一项为本地安装
第二项为远程安装
这里选择第一项
8)是否删除磁盘上的分区和文件系统,这里选Yes, discard any data
9)Hostname与 Configure Network Hostme:自定义命名 Configure network : 点击Edit,勾选Connect automaictlly,开启网卡
配置网卡信息(Configure Network)
打开自动连接(Connect automatically)
两个网卡 eth0 eth1都要打开
10)时区的选择,选择Asia/shanghai, select clock use utc 此选项卡要去掉,此选项为使用UTS时间,然后next
11)设置root密码
12)安装方式,选择自定义布局Create Custom Layout
创建分区 分区 大小(MB) /boot 1024 / 50000
/data 30000 swap 2048
选择标准分区Standard Partition
13)格式化创建分区
14)开始给硬盘分区
15)选择安装包
16)进入安装界面,开始安装安装包,安装完成后,点击reboot重启
17)重启后进入欢迎界面,点击Forward
18)同意协议,下一步
19)创建自己的用户名及密码,并设置时间
20)安装完毕,关闭系统,拍个快照。
1.19 linux笔记总结(一)
- 查看系统信息
- 查看发行版:cat /etc/centos-release 或者 lsb_release -a
~]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core)
- 修改版本号:nano(nano为字符界面编辑文本文件)
~]# nano /etc/centos-release CentOS Linux release 888 (Core) ctro+o保存,ctro+x退出 ~]# cat /etc/centos-release#为了生产安全,可以修改版本号 CentOS Linux release 888 (Core)
- 查看内核版本 uname -r
~]# uname -r 3.10.0-957.el7.x86_64
- 查看cpu 信息
~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 8 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 158 Model name: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Stepping: 10 CPU MHz: 2207.999 CPU max MHz: 0.0000 CPU min MHz: 0.0000 BogoMIPS: 4415.99 Hypervisor vendor: VMware Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 9216K NUMA node0 CPU(s): 0-7 ~]# cat /proc/cpuinfo #<=该命令可以查看系统CPU有多少个核,频率,特性等等
- 查看内存:
~]# cat /proc/meminfo ~]# free ~]# top |grep %free ~]# ps aux –sort -rss ~]# vmstat -s
- 查看分区
~]# lsblk # -f可以列出分区类型 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 512M 0 part /boot ├─sda2 8:2 0 1G 0 part └─sda3 8:3 0 48.5G 0 part / ~]# df ~]# fdisk -l #列出分区表
查看网卡信息:
~]# dmesg |grep eth
- 设置用户自动登陆模式(安装了图形界面)。
- 用nano(nano为字符界面编辑文本文件)打开文件路径nano /etc/gdm/custom.conf进入修改界面,增加下面一段话保存即可
AutomaticLoginEnable=true AutomaticLogin=root
- 查看系统ID账号.
0为root账号,在centos6.10中普通账号为500以后,centos7.5中普通账号 为1000以后。例如id – u为查看当前用户系统账号,id -u lv 为查看lv账号的ID号。
centos 6.10:
~] # id -u tao 501 ~]# id -u root 0
- centos 7.5:
~]# id -u tao 1001 ~]# id -u root 0
按ctrl+alt+f2-f6可依次打开五个终端,按tty可以看到在那个终端登录的。还可用 who查看所有登陆终端的信息。显示pts的为远程登陆的伪终端,tty为本机登陆(vmware控制台)。whoami为 显示当前登陆的用户,who am i 为显示详细的登陆用户及在那个终端。w 显示更详细的登陆信息。也可以用chvt1-6来切换终端。
~]# who root tty1 2019-08-16 16:33 root pts/0 2019-08-16 16:51 (192.168.100.1) #xshell连接上的 ~]# w 17:56:43 up 1:23, 2 users, load average: 0.00, 0.01, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 16:33 32:51 0.38s 0.38s -bash root pts/0 192.168.100.1 16:51 3.00s 0.10s 0.00s w ~]# whoami root ~]# lastb btmp begins Fri Aug 16 17:42:01 2019
init3为切换到字符界面,init5为切换界面。startx 也可切换到图形界面,但 不是模式切换,只是打开了一个程序而已。
查看运行的那种shell 用echo $SHELL. 查看系统支持哪几种shell,cat /etc/shells.
CentOS7.5:
[root@centos7 ~]# echo $SHELL /bin/bash [root@centos7 ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
CentOS6.10:
~]# echo $SHELL /bin/bash ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
- 命令提示符的更改。(#为管理员登陆,$为普通用户登陆。) 显示提示符格式,echo $PS1 修改提示符格式,PS1="[\e[1;34m][\u@\h \W]\$ [\e[0m]"
~]# echo $PS1 \[\e[1;34m\][\u@\h \W]\$ \[\e[0m\] ~]# cat /etc/profile.d/zhu.sh PS1="\[\e[1;34m\][\u@\h \W]\\$ \[\e[0m\]"
- 要想永久保存必须存入文件,nano /etc/profile.d/zhu.sh 进入文件后将PS1里的参数修改保存即可。
\e \033 \u当前用户 \h主机名简称 \H 主机名 \w 当前工作目录 \W 当前工作目录基名 \t 24小时时间格式 \T 12小时时间格式 \! 命令历史数 \# 开机后命令历史数
- 输入命令后回车:提交shell程序找到键入命令所对应的可执行程序或代码并由其分析后提交给内核分配资源将其运行起来
命令的类型:
内部命令:由shell自带的,而且通过某命令形式提供,使用help可以查看内部命令列表
help 内部命令列表 enable cmd 启用内部命令 enable –n cmd 禁用内部命令 enable –n 查看所有禁用的内部命令
外部命令 :在文件系统路径下有对应的可执行程序文件
查看路径:which -a |--skip-alias ; whereis
用type+cmd 来查看是外部命令还是内部命令
~]# type cd cd is a shell builtin ~]# type ls ls is aliased to `ls --color=auto' ~]# type who who is /usr/bin/who
或用which命令 -a可以选择查看全部路 此图查看了who命令为外部命令,enable为shell内部集成的命令。
~]# type enable enable is a shell builtin ~]# enable |wc -l 61 ~]# enable -n echo #enable命令用于启用和关闭shell内建echo指令,关闭内建命令echo ~]# enable |wc -l 60 ~]# enable -a|wc -l 61 ~]# type echo echo is /usr/bin/echo ~]# enable echo # 启用内部命令echo ~]# type echo echo is a shell builtin
- 使用help 命令可以看到 echo前面加了个*
~]# help|grep echo *echo [-neE] [arg ...] time [-p] pipeline
- 可以统计内建命令的行数
~]# enable -a |wc -l
- 外部命令用cmd --help 此命令可以获取大部分的外部命令帮助信息
~]# who --help
- 内部命令可以用help cmd
~]# help enable
- 注意:外部命令的执行会按照 PASH 变量中的列表次序执行,如果没有则报错,但是 执行过一次的外部命令将会被放入hash中缓存,即使第二次路径更改,任然会按照缓存中的路径执行。
- hash缓存
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
- hash常见用法:
- hash 显示 hash缓存
- hash –l 显示hash缓存,可作为输入使用
- hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
- hash –d name 清除name缓存
hash –r 清除所有缓存
~]# hash -p /usr/bin/nano nane ~]# nane ~]# hash -l builtin hash -p /usr/bin/nano nane builtin hash -p /usr/bin/nano nane ~] # hash -p /usr/bin/nano nane ~] # hash ^C ~] # hash -t nane /usr/bin/nano ~] # hash -l builtin hash -p /usr/bin/nano nane builtin hash -p /usr/bin/nano nane ~] # hash -d nane ~] # hash -r ~] # hash hash: hash table empty
- 命令别名
alias命令 :显示当前shell进程所有可用的命令别名
定义别名NAME,其相当于执行命令VALUE
alias NAME='VALUE'在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
定义别名; alias cdnet='cd/etc/sysconfig/network-scripts/'
编辑配置给出的新配置不会立即生效,必须保存到文件中使用
nano .bashrc
保存后用.或source加文件生效. .bashrc/
或source .bashrc
或exec bash
撤消别名:unalias
unalias [-a] name [name ...]
-a 取消所有别名
~]# cat .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias cdnet=cd /etc/sysconfig/network-scripts ~]# . .bashrc
- 如果要用原始命令不用别名命令可以找路径输入,加'',加,加""都可以 例如;\ls, ‘ls’ , "ls" , /bin/ls ,command ls都可以 which –alias-skip ls跳过别名只显示路径 取消别名 ualias+name
命令执行的优先级 别名>内部命令>外部命令
当使用一个命令的时候会按照PATH后面的路径一个一个找,第一次找到后开始使用,使用后放入缓存里hash,当第二次使用的时候就不找了而是直接去缓存里面找
命令的执行(优先级)过程:
1.判断命令是否有别名,有:则执行别名对应的命令。
2.判断是否是内部命令
- 3.判断是否是外部命令
- 已执行过,根据此前执行的时候查找到的PATH,被hash缓存过的路径去执行;
- 未执行过,根据echo $PATH的列表次序去搜索执行,如果没搜索到就报错;
- 命令格式:
COMMAND [OPTIONS...][ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能
短选项:-c 例如:-l, -h
- 长选项:--word 例如:--all, --human-readable
- 参数:命令的作用对象,比如文件名,用户名等
- 注意:
- 多个选项以及多参数和命令之间使用空白字符分隔
- 取消和结束命令执行:Ctrl+c,Ctrl+d
- 多个命令可以用;符号分开
- 一个命令可以用\分成多行
- 时间和时钟
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令
date 显示和设置系统时间
date +%s
date -d @1509536033
hwclock,clock: 显示硬件时钟
-s, 以硬件时钟为准,校正系统时钟
-w, 以系统时钟为准,校正硬件时钟
用网络时间来校准系统时间 ;ntpdate 17220.0.1 (临时生效)
要想开机校准需要写入配置文件
centos6:
vim /etc/ntp.conf 增加 server 172.20.0.1 iburst service ntpd start (立即启用服务生效) chkconfig ntpd on (每次开机都启用生效) tzselect 选择时区(centos6)
centos7:
vim /etc/chrony.conf 增加 server 172.20.0.1 iburst systemctl start chronyd (立即启用服务生效) systemctl enable chronyd (每次开机都启用生效) 时区:/etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai timedatectl 设置时区(centos7) sosreport收集系统配置及架构信息并输出诊断文档
显示日历:cal –y
设置系统时间(只有在root下才可更改)
date 031212122018.30(2018 03 月12 日12:12:30)
~]# date 031212122018.30 Mon Mar 12 12:12:30 CST 2018
- date -s "mmddHHMMYYSS"
- date -s "str" (str可以自己输入格式也可在引号后面跟上指定的格式)
date -s "-1 day"+%F 设置时间
- date -d "str" (str可以自己输入格式也可在引号后面跟上指定的格式) 显示时间
- date -d "-2 day" +%F 显示前两天的时间
date -d "5 day" +%F 显示后五天的时间
显示详细的的时间 date +"%Y-%m-%d %H:%M:%S" date +"%F %T" 两种都可以。
10 .linux开关机命令
poweroff关机
halt 关机
init 0 关机
init 6重启
reboot 重启
- -f: 强制,不调用shutdown
- -p: 切断电源
关机或重启shutdown
shutdown [OPTION]... [TIME][MESSAGE]
- -r:reboot
- -h: halt
- -c :cancel
TIME :无指定,默认相当于+1
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如+3
- hh:mm: 绝对时间表示,指明具体时间
- shutdown -c 取消关机
- shutdown +5 “hbdj” 五分钟后关机并有提示消息
shutdown -h 12:30 定时关机命令