服务器

塔式服务器
刀片式服务器:在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度
机架式Rack服务器:按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位 ——-现阶段最主流
1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器
机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器
机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)
image.png
PCI:Iintel在很早前推出的一种来连接主板和外部设备的总线标准。【Peripheral Component Interconnect】
CPU 架构:
CISC:Complex Instruction Set Computer,复杂指令集——-串行执行
RISC:Reduced Instruction Set Computer,精减指令集 ——支持并行

计算机基础

1.交互式接口——shell程序

Linux的用户界面,提供了用户与内核进行交互的接口(Linux的命令解释器)

  • 显示当前使用的shell

    1. [root@CentOS ~]# echo $SHELL
    2. /bin/bash
  • 显示当前系统使用的所有shell

    1. [root@CentOS ~]# cat /etc/shells
    2. /bin/sh
    3. /bin/bash
    4. /usr/bin/sh
    5. /usr/bin/bash
    6. /bin/tcsh
    7. /bin/csh
    8. /usr/bin/tmux

查看硬盘:lsblk
查看cpu:lscpu
内存:free-h
网卡:ip a
发行版本:cat /etc/os-release
内核版本:uname -r
临时关闭图形界面:init 3或ctrl + alt + F3

2.命令提示符格式修改 PS1

  • 显示提示符格式
    1. [root@CentOS ~]# echo $PS1
    2. [\u@\h \W]\$
    image.png
    image.pngimage.pngimage.png
    范例:PS1=’[\e[32;40m][\u@\h \w]$ [\e[0m]‘
    image.png
    永久保存设置:
    (centOS)
    1. [root@localhost ~]$ echo 'PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"' > /etc/profile.d/env.sh
    2. [root@localhost ~]$ cat /etc/profile.d/env.sh
    3. PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"
    4. [root@localhost ~]$ exit
    (ubuntu)
    1. zhuyuany@ununtu:~$ echo 'PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"' >> .bashrc
    2. zhuyuany@ununtu:~$ exit

    3.执行命令

    输入命令后回车,请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
    shell中可执行的两类命令:内部命令 ;外部命令

    查看是否存在对应内部和外部命令

    1. [zhuyuany@ununtu ~]$ type -a echo
    2. echo is a shell builtin
    3. echo is /bin/echo

管理内部命令(临时禁用)

  • enable -n CMD 禁用内部命令
  • enable CMD 启用内部命令
  • enable –n 查看所有禁用的内部命令
  • help 内部命令列表

查看外部命令路径

  • which CMD
  • whereis CMD

    1. [zhuyuany@ununtu ~]$ which screen
    2. /usr/bin/screen
    3. [zhuyuany@ununtu ~]$ whereis screen
    4. screen: /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 取消所有别名

  1. [root@CentOS ~]$ alias fr='free -h'
  2. [root@CentOS ~]$ fr
  3. total used free shared buff/cache available
  4. Mem: 972M 769M 75M 23M 127M 57M
  5. Swap: 2.0G 552M 1.5G
  6. [root@CentOS ~]$ unalias -a fr
  7. [root@CentOS ~]$ fr
  8. bash: fr: command not found...

在命令行中定义的别名,仅对当前shell进程有效。如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc

如果别名同原命令同名,如果要执行原命令,可使用

  • \CMD
  • “CMD”
  • ‘CMD’
  • command CMD
  • /path/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

  1. 输出当前的时间 date
  2. #按指定格式显示时间
  3. date "+%F %T"
  4. 2021-10-05 14:58:49
  5. --设置完整的时间--
  6. date -s "2016-09-10 14:24:34"
  7. 显示文件最后修改时间
  8. date -r /bin
  • 硬件时钟:主板 (clock,hwclock)

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

  • 时区文件:/etc/localtime

    1. [root@centOS6 ~]$ ll /etc/localtime
    2. -rw-r--r--. 6 root root 388 May 10 2018 /etc/localtime
  • 显示日历:cal –y

    ·关机重启

  • shutdown [OPTION]… [TIME] [MESSAGE]

-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间

  • 关机

halt
poweroff

  • 重启 reboot

-f #强制,不调用shutdown
-p #切断电源

·用户登录信息查看命令

  • whoami 显示当前登录有效用户
  • who 系统当前所有的登录会话
  • w 系统当前所有的登录会话及所做的操作

    ·终端复用器软件 screen、tmux

    (1)screen可以实现会话管理,如:新建会话,共享会话等
    安装 screen

    1. (#CentOS7 安装screen
    2. [root@centos7 ~]#yum -y install screen
    3. (#CentOS8 安装screen
    4. [root@centos8 ~]#dnf -y install epel-release
    5. [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,%) 左右分窗格image.png

·输出信息 echo

  • echo 显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加 上换行号

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

  • 显示变量

echo "$VAR_NAME” #用变量值替换,弱引用
echo '$VAR_NAME’ #变量不会替换,强引用

  • 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

image.png

  • 在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码,具有颜色的字符;加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码

echo -e '\033[43;31;1;5m字符串\e[0m'
image.png

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 码来填充
image.png
image.png

  • 修改LANG变量实现中文语言提示

image.png

5.命令行扩展和被括起来的集合

·命令行扩展:`` 和 $()

$(CMD)CMD 把一个命令的输出打印给另一个命令的参数,CMD必须是一个有标出信息的命令
比较 “ ” ,‘ ’, ``三者区别

  1. [root@localhost ~]$ echo "echo $HOSTNAME"
  2. echo localhost.localdomain
  3. [root@localhost ~]$ echo 'echo $HOSTNAME'
  4. echo $HOSTNAME
  5. [root@localhost ~]$ echo `echo $HOSTNAME`
  6. 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}
image.png

·tab 键补全

·命令行历史

当执行命令后,系统默认会在内存记录执行过的命令。
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是 ~/.bash_history
登录shell时,会读取命令历史文件中记录下的命令加载到内存中
登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
利用命令历史,可以用来重复执行命令,提高输入效率

  • 命令:history

image.png

  • 命令历史相关环境变量

image.png
以上变量可以 export 变量名=”值” 形式存放在 /etc/profile 或 ~/.bash_profile
image.png

  • 调用命令行历史

重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctrl+p 并回车执行
image.png
#要重新调用前一个命令中最后一个参数
!$ 表示
Esc, . 点击Esc键后松开,然后点击 . 键
Alt+ . 按住Alt键的同时点击 . 键
image.png

6.bash的快捷键

image.pngimage.png

7.获得帮助

  • whatis
  • command —help
  • man and info
  • /usr/share/doc/
  • Red Hat documentation 、Ubuntu documentation
  • 软件项目网站
  • 其它网站
  • 搜索

登录前提示预设issue和issue.d(虚拟端末)

  1. root@localhost ~]$ cat /etc/issue
  2. \S
  3. Kernel \r on an \m
  4. [root@localhost ~]$ nano /etc/issue (一般不要设welcom)

image.png
(CentOS8)Xshell登录时无

  • CentOS8 系统自带Web Console功能,可以通过浏览器管理主机

开启方法:
systemctl enable --now cockpit.socket
systemctl start cockpit.socket
然后在浏览器中访问地址:http://主机地址:9090 ,即可进入控制台。

  1. [root@localhost ~]$ cd /etc/issue.d/ Xshell登录时的预设文件地址)
  2. [root@localhost /etc/issue.d]$ ls
  3. cockpit.issue
  4. [root@localhost /etc/issue.d]$ cat cockpit.issue
  5. Activate the web console with: systemctl enable --now cockpit.socket
  6. [root@localhost /etc/issue.d]$ iptables -vnL (查看已有的规则 iptables命令是Linux上最常用的防火墙代理,是一个命令行工具,位于用户空间。用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"里面,【netfilter】,这个框架才是真正的防火墙。https://www.cnblogs.com/liufarui/p/10970468.html
  7. Chain INPUT (policy ACCEPT 1703 packets, 13M bytes)
  8. pkts bytes target prot opt in out source destination
  9. 0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
  10. 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
  11. 0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
  12. 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
  13. Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  14. pkts bytes target prot opt in out source destination
  15. 0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
  16. 0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
  17. 0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
  18. 0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
  19. 0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
  20. Chain OUTPUT (policy ACCEPT 1533 packets, 80208 bytes)
  21. pkts bytes target prot opt in out source destination
  22. 0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
  23. [root@localhost /etc/issue.d]$ systemctl stop firewalld 临时停掉防火墙)
  24. [root@localhost /etc/issue.d]$ iptables -vnL
  25. Chain INPUT (policy ACCEPT 28 packets, 1848 bytes)
  26. pkts bytes target prot opt in out source destination
  27. Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  28. pkts bytes target prot opt in out source destination
  29. Chain OUTPUT (policy ACCEPT 15 packets, 1444 bytes)
  30. pkts bytes target prot opt in out source destination
  31. [root@localhost /etc/issue.d]$ systemctl disable firewalld(永久停掉防火墙)
  32. Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
  33. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  34. [root@localhost /etc/issue.d]$ systemctl enable --now cockpit.socket
  35. Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket /usr/lib/systemd/system/cockpit.socket.
  36. [root@localhost /etc/issue.d]$ ss -ntlSocket Statistics的缩写,可以用来获取socket统计信息)
  37. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  38. LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
  39. LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
  40. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  41. LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
  42. LISTEN 0 128 [::]:111 [::]:*
  43. LISTEN 0 128 [::]:22 [::]:*
  44. LISTEN 0 128 [::1]:6010 [::]:*
  45. LISTEN 0 128 *:9090 *:*
  46. [root@localhost /etc/issue.d]$ ss -ntlp
  47. [root@localhost /etc/issue.d]$ systemctl status cockpit.socket
  48. cockpit.socket - Cockpit Web Service Socket
  49. Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor preset: disabled)
  50. Active: active (listening) since Wed 2021-07-21 13:53:22 CST; 2min 32s ago
  51. Docs: man:cockpit-ws(8)
  52. Listen: [::]:9090 (Stream)
  53. Process: 3377 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd (code=exited, status=0/SUCCESS)
  54. Process: 3369 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost (code=exited, status=0/SUCCESS)
  55. Tasks: 0 (limit: 11170)
  56. Memory: 1.6M
  57. CGroup: /system.slice/cockpit.socket
  58. Jul 21 13:53:22 localhost.localdomain systemd[1]: Starting Cockpit Web Service Socket.
  59. Jul 21 13:53:22 localhost.localdomain systemd[1]: Listening on Cockpit Web Service Socket.
  60. [root@localhost /etc/issue.d]$ ip a
  61. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  62. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  63. inet 127.0.0.1/8 scope host lo
  64. valid_lft forever preferred_lft forever
  65. inet6 ::1/128 scope host
  66. valid_lft forever preferred_lft forever
  67. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  68. link/ether 00:0c:29:bf:98:ee brd ff:ff:ff:ff:ff:ff
  69. inet 192.168.50.137/24 brd 192.168.50.255 scope global dynamic noprefixroute ens160
  70. valid_lft 1540sec preferred_lft 1540sec
  71. inet6 fe80::6fc9:2bb7:3a79:78b/64 scope link noprefixroute
  72. valid_lft forever preferred_lft forever
  73. 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  74. link/ether 52:54:00:6b:ff:2c brd ff:ff:ff:ff:ff:ff
  75. inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
  76. valid_lft forever preferred_lft forever
  77. 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
  78. link/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

image.png

登陆后提示设定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中去)