服务器
塔式服务器
刀片式服务器:在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度 
机架式Rack服务器:按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位 ——-现阶段最主流
1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器
机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器
机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U) 
 
 PCI:Iintel在很早前推出的一种来连接主板和外部设备的总线标准。【Peripheral Component Interconnect】
CPU 架构:
CISC:Complex Instruction Set Computer,复杂指令集——-串行执行
RISC:Reduced Instruction Set Computer,精减指令集 ——支持并行
 
计算机基础
1.交互式接口——shell程序
Linux的用户界面,提供了用户与内核进行交互的接口(Linux的命令解释器)
显示当前使用的shell
[root@CentOS ~]# echo $SHELL/bin/bash
显示当前系统使用的所有shell
[root@CentOS ~]# cat /etc/shells/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash/bin/tcsh/bin/csh/usr/bin/tmux
查看硬盘:lsblk        
查看cpu:lscpu
内存:free-h
网卡:ip a
发行版本:cat /etc/os-release
内核版本:uname -r
临时关闭图形界面:init 3或ctrl + alt + F3
2.命令提示符格式修改 PS1
- 显示提示符格式
[root@CentOS ~]# echo $PS1[\u@\h \W]\$




范例:PS1=’[\e[32;40m][\u@\h \w]$ [\e[0m]‘
永久保存设置:
(centOS)
(ubuntu)[root@localhost ~]$ echo 'PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"' > /etc/profile.d/env.sh[root@localhost ~]$ cat /etc/profile.d/env.shPS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"[root@localhost ~]$ exit
zhuyuany@ununtu:~$ echo 'PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"' >> .bashrczhuyuany@ununtu:~$ exit
3.执行命令
输入命令后回车,请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
shell中可执行的两类命令:内部命令 ;外部命令查看是否存在对应内部和外部命令
[zhuyuany@ununtu ~]$ type -a echoecho is a shell builtinecho is /bin/echo
 
管理内部命令(临时禁用)
- enable -n CMD 禁用内部命令
 - enable CMD 启用内部命令
 - enable –n 查看所有禁用的内部命令
 - help 内部命令列表
 
查看外部命令路径
- which CMD
 whereis CMD
[zhuyuany@ununtu ~]$ which screen/usr/bin/screen[zhuyuany@ununtu ~]$ whereis screenscreen: /usr/bin/screen /usr/share/screen /usr/share/man/man1/screen.1.gz /usr/share/info/screen.info-1.gz /usr/share/info/screen.info-3.gz /usr/share/info/screen.info-5.gz /usr/share/info/screen.info-6.gz /usr/share/info/screen.info-2.gz /usr/share/info/screen.info.gz /usr/share/info/screen.info-4.gz
hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的 路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不 存在,将会去PATH路径下寻找
hash 显示hash缓存
- hash -l 显示hash缓存,可作为输入使用
 - hash -p path name 将命令全路径path起别名为name
 - hash -t name 打印缓存中name的路径
 hash -d name 清除name缓存 hash -r 清除全部缓存
命令别名alias
alias 显示当前shell进程所有可用的命令别名
- alias NAME=’CMD’ 定义别名NAME,其相当于执行命令CMD (临时)
 - unalias -a NAME 撤消别名
 
unalias -a 取消所有别名
[root@CentOS ~]$ alias fr='free -h'[root@CentOS ~]$ frtotal used free shared buff/cache availableMem: 972M 769M 75M 23M 127M 57MSwap: 2.0G 552M 1.5G[root@CentOS ~]$ unalias -a fr[root@CentOS ~]$ frbash: fr: command not found...
在命令行中定义的别名,仅对当前shell进程有效。如果想永久有效,要定义在配置文件中
- 仅对当前用户:~/.bashrc
 - 对所有用户有效:/etc/bashrc
 
如果别名同原命令同名,如果要执行原命令,可使用
- \CMD
 - “CMD”
 - ‘CMD’
 - command CMD
 - 
命令格式
CMD [OPTIONS…] [ARGUMENTS…]
选项:用于启用或关闭命令的某个或某些功能
短选项:UNIX 风格选项,-c 例如:-l, -h
长选项:GNU风格选项,—word 例如:—all, —human
BSD风格选项: 一个字母,例如:a,使用相对较少
参数:命令的作用对象,比如:文件名,用户名等 多个选项以及多参数和命令之间使用空白字符分隔
- 取消和结束命令执行:Ctrl+c,Ctrl+d(相当于logout)
 - 多个命令放在一行,每个命令之间可以用 “;” 符号分开
 - 
常见命令
·日期和和时间
 系统时钟:由Linux内核通过CPU的工作频率进行的 (date)
%F 完整日期格式,等价于 %Y-%m-%d
%T 时间,等于%H:%M:%S
输出当前的时间 date#按指定格式显示时间date "+%F %T"2021-10-05 14:58:49--设置完整的时间--date -s "2016-09-10 14:24:34"显示文件最后修改时间date -r /bin
- 硬件时钟:主板 (clock,hwclock)
 
-s, —hctosys 以硬件时钟为准,校正系统时钟 
-w, —systohc 以系统时钟为准,校正硬件时钟
时区文件:/etc/localtime
[root@centOS6 ~]$ ll /etc/localtime-rw-r--r--. 6 root root 388 May 10 2018 /etc/localtime
- 
·关机重启
 shutdown [OPTION]… [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
                             now: 立刻,相当于+0
                             +#: 相对时间表示法,几分钟之后;例如 +3
                             hh:mm: 绝对时间表示,指明具体时间
- 关机
 
halt 
poweroff
- 重启 reboot
 
·用户登录信息查看命令
- whoami 显示当前登录有效用户
 - who 系统当前所有的登录会话
 - 
·终端复用器软件 screen、tmux
(1)screen可以实现会话管理,如:新建会话,共享会话等
安装 screen(#CentOS7 安装screen)[root@centos7 ~]#yum -y install screen(#CentOS8 安装screen)[root@centos8 ~]#dnf -y install epel-release[root@centos8 ~]#dnf -y install screen
 screen –S [SESSION] 创建新screen会话
screen –x [SESSION]    加入screen会话
Ctrl+a,d    剥离当前screen会话
- screen -ls 显示所有已经打开的screen会话
 - screen -r [SESSION] 恢复某screen会话
 
(2)Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离。mux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b ,即先按下 Ctrl+b ,快捷键才会生效。帮助命令的快捷键是 Ctrl+b ? 然后,按下 q 键,就可以退出帮助
安装    yum install tmux
启动与退出    tmux;exit
tmux new -s <session name>新建会话tmux ls(或Ctrl+b,s) 查看当前所有的 Tmux 会话tmux detach(或Ctrl+b d) 将当前会话与窗口分离tmux attach -t <session name>重新接入某个已存在的会话 重新接入某个已存在的会话tmux kill-session -t <session name>杀死某个会话tmux switch -t <session name>切换会话tmux split-window(或ctrl+b,”) 上下分窗格
tmux split-window -h(或ctrl+b,%)    左右分窗格
·输出信息 echo
- echo 显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加 上换行号
 
echo [-neE][字符串]
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
- 显示变量
 
echo "$VAR_NAME”   #用变量值替换,弱引用 echo '$VAR_NAME’   #变量不会替换,强引用
- 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
 

- 在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码,具有颜色的字符;加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码
 
echo -e '\033[43;31;1;5m字符串\e[0m'
4.字符集和编码
- ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0
 
查看 ascii 表:man ascii
- Unicode 仅仅只是一个字符集,规定了每个字符对 应的二进制代码,至于这个二进制代码如何存储则没有规定
 
(Unicode编码方案)
UTF-8:变长,1到4个字节,当前最主流的方案
UTF-16:变长,2或4个字节
UTF-32:固定长度,4个字节
- UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储。使用 1 - 4 个字节表示一个 字符,根据字符的不同变换长度。
 
编码规则如下: 
对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码。
因此,对于英文中的 0  - 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码的文档可用 UTF-8 编码打开 
对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩 余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码来填充

- 修改LANG变量实现中文语言提示
 
5.命令行扩展和被括起来的集合
·命令行扩展:`` 和 $()
$(CMD) 或 CMD    把一个命令的输出打印给另一个命令的参数,CMD必须是一个有标出信息的命令
比较 “ ” ,‘ ’, ``三者区别
[root@localhost ~]$ echo "echo $HOSTNAME"echo localhost.localdomain[root@localhost ~]$ echo 'echo $HOSTNAME'echo $HOSTNAME[root@localhost ~]$ echo `echo $HOSTNAME`localhost.localdomain
双引号:不能识别命令,可以识别变量
单引号:六亲不认,变量和命令都不识别,都当成了普通的字符串 
反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的 命令继续
·括号扩展:{ }
{} 可以实现打印重复字符串的简化形式 
echo file{1,3,5}     结果为:file1 file3 file5  
rm -f file{1,3,5}                                            
echo {1..10}
echo {a..z}
echo {000..20..2}
·tab 键补全
·命令行历史
当执行命令后,系统默认会在内存记录执行过的命令。
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是 ~/.bash_history
登录shell时,会读取命令历史文件中记录下的命令加载到内存中
登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
利用命令历史,可以用来重复执行命令,提高输入效率
- 命令:
history 

- 命令历史相关环境变量
 

以上变量可以 export 变量名=”值” 形式存放在 /etc/profile 或 ~/.bash_profile
 
- 调用命令行历史
 
重复前一个命令方法
重复前一个命令使用上方向键,并回车执行 
按 !! 并回车执行
输入 !-1 并回车执行 
按 Ctrl+p 并回车执行

#要重新调用前一个命令中最后一个参数 
!$ 表示 
Esc, .   点击Esc键后松开,然后点击 . 键 
Alt+ .   按住Alt键的同时点击 . 键

6.bash的快捷键
7.获得帮助
- whatis
 - command —help
 - man and info
 - /usr/share/doc/
 - Red Hat documentation 、Ubuntu documentation
 - 软件项目网站
 - 其它网站
 - 搜索
 
登录前提示预设issue和issue.d(虚拟端末)
root@localhost ~]$ cat /etc/issue\SKernel \r on an \m[root@localhost ~]$ nano /etc/issue (一般不要设welcom)

(CentOS8)Xshell登录时无
- CentOS8 系统自带Web Console功能,可以通过浏览器管理主机
 
开启方法:systemctl enable --now cockpit.socket  systemctl start cockpit.socket
然后在浏览器中访问地址:http://主机地址:9090 ,即可进入控制台。
[root@localhost ~]$ cd /etc/issue.d/ (Xshell登录时的预设文件地址)[root@localhost /etc/issue.d]$ lscockpit.issue[root@localhost /etc/issue.d]$ cat cockpit.issueActivate the web console with: systemctl enable --now cockpit.socket[root@localhost /etc/issue.d]$ iptables -vnL (查看已有的规则 iptables命令是Linux上最常用的防火墙代理,是一个命令行工具,位于用户空间。用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"里面,【netfilter】,这个框架才是真正的防火墙。https://www.cnblogs.com/liufarui/p/10970468.html)Chain INPUT (policy ACCEPT 1703 packets, 13M bytes)pkts bytes target prot opt in out source destination0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:530 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:530 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:670 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/00 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/00 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachableChain OUTPUT (policy ACCEPT 1533 packets, 80208 bytes)pkts bytes target prot opt in out source destination0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68[root@localhost /etc/issue.d]$ systemctl stop firewalld 临时停掉防火墙)[root@localhost /etc/issue.d]$ iptables -vnLChain INPUT (policy ACCEPT 28 packets, 1848 bytes)pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 15 packets, 1444 bytes)pkts bytes target prot opt in out source destination[root@localhost /etc/issue.d]$ systemctl disable firewalld(永久停掉防火墙)Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@localhost /etc/issue.d]$ systemctl enable --now cockpit.socketCreated symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.[root@localhost /etc/issue.d]$ ss -ntl(Socket Statistics的缩写,可以用来获取socket统计信息)State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 0.0.0.0:111 0.0.0.0:*LISTEN 0 32 192.168.122.1:53 0.0.0.0:*LISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*LISTEN 0 128 [::]:111 [::]:*LISTEN 0 128 [::]:22 [::]:*LISTEN 0 128 [::1]:6010 [::]:*LISTEN 0 128 *:9090 *:*[root@localhost /etc/issue.d]$ ss -ntlp[root@localhost /etc/issue.d]$ systemctl status cockpit.socket● cockpit.socket - Cockpit Web Service SocketLoaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor preset: disabled)Active: active (listening) since Wed 2021-07-21 13:53:22 CST; 2min 32s agoDocs: man:cockpit-ws(8)Listen: [::]:9090 (Stream)Process: 3377 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd (code=exited, status=0/SUCCESS)Process: 3369 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost (code=exited, status=0/SUCCESS)Tasks: 0 (limit: 11170)Memory: 1.6MCGroup: /system.slice/cockpit.socketJul 21 13:53:22 localhost.localdomain systemd[1]: Starting Cockpit Web Service Socket.Jul 21 13:53:22 localhost.localdomain systemd[1]: Listening on Cockpit Web Service Socket.[root@localhost /etc/issue.d]$ ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:bf:98:ee brd ff:ff:ff:ff:ff:ffinet 192.168.50.137/24 brd 192.168.50.255 scope global dynamic noprefixroute ens160valid_lft 1540sec preferred_lft 1540secinet6 fe80::6fc9:2bb7:3a79:78b/64 scope link noprefixroutevalid_lft forever preferred_lft forever3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:6b:ff:2c brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:6b:ff:2c brd ff:ff:ff:ff:ff:ff
[root@localhost /etc/issue.d]$ nano welcom
[root@localhost /etc/issue.d]$ exit
logout
[root@localhost /etc/issue.d]$ ls
cockpit.issue  welcom
[root@localhost /etc/issue.d]$ ll
total 4
lrwxrwxrwx. 1 root root 17 Apr 24  2020 cockpit.issue -> /run/cockpit/motd
-rw-r--r--. 1 root root 25 Jul 21 14:20 welcom
[root@localhost /etc/issue.d]$ mv welcom welcom.issue        (需要有相同的.issue的后缀才能设置登录前预设信息)
[root@localhost /etc/issue.d]$ exit
logout

登陆后提示设定motd和motd.d(Xshell端末)
[root@localhost ~]$ ls /etc/motd
/etc/motd
[root@localhost ~]$ ll /etc/motd        
-rw-r--r--. 1 root root 0 Sep 10  2018 /etc/motd
[root@localhost ~]$ cat /etc/motd    (当前文件夹下并无设定)
[root@localhost ~]$ nano /etc/motd
[root@localhost ~]$ logout
Connecting to 192.168.50.137:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
welcome to zyy'computer,I think she is besutiful(在motd文件中写入的内容)
Web console: https://localhost:9090/ or https://192.168.50.137:9090/
Last login: Wed Jul 21 15:37:09 2021 from 192.168.50.1
[root@localhost ~]$
[root@localhost ~]$ ls /etc/motd.d/
cockpit
[root@localhost ~]$ vim /etc/motd.d/test    //(在test文件中写入内容)
[root@localhost ~]$ logout
Connecting to 192.168.50.137:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
welcome to zyy'computer,I think she is besutiful
Web console: https://localhost:9090/ or https://192.168.50.137:9090/
logoin successful!sugoi!    //(在test文件中写入的内容)
Last login: Wed Jul 21 15:46:18 2021 from 192.168.50.1
[root@localhost ~]$
从window中拖文件到命令行中lrzsz
[root@localhost ~]$ cd /etc/motd.d
[root@localhost /etc/motd.d]$ ls
cockpit  test
[root@localhost /etc/motd.d]$ rm -f test
[root@localhost /etc/motd.d]$ dnf install lrzsz
……Complete!
[root@localhost /etc/motd.d]$ rz -E (从windows中拖动名为motd_peiqi文件过来)
rz waiting to receive.
[root@localhost /etc/motd.d]$ ls
cockpit  motd_peiqi
[root@localhost ~]$ sz /usr/share/doc/tcpdump/README.md(拖文件到windows中去)
                    

