服务器
塔式服务器
刀片式服务器:在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度
机架式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.sh
PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"
[root@localhost ~]$ exit
zhuyuany@ununtu:~$ echo 'PS1="\[\e[32;40m\][\u@\h \w]$ \[\e[0m\]"' >> .bashrc
zhuyuany@ununtu:~$ exit
3.执行命令
输入命令后回车,请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
shell中可执行的两类命令:内部命令 ;外部命令查看是否存在对应内部和外部命令
[zhuyuany@ununtu ~]$ type -a echo
echo is a shell builtin
echo 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 screen
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 取消所有别名
[root@CentOS ~]$ alias fr='free -h'
[root@CentOS ~]$ fr
total used free shared buff/cache available
Mem: 972M 769M 75M 23M 127M 57M
Swap: 2.0G 552M 1.5G
[root@CentOS ~]$ unalias -a fr
[root@CentOS ~]$ fr
bash: 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
\S
Kernel \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]$ ls
cockpit.issue
[root@localhost /etc/issue.d]$ cat cockpit.issue
Activate 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 destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 1533 packets, 80208 bytes)
pkts bytes target prot opt in out source destination
0 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 -vnL
Chain INPUT (policy ACCEPT 28 packets, 1848 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain 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.socket
Created 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:Port
LISTEN 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 Socket
Loaded: 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 ago
Docs: 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.6M
CGroup: /system.slice/cockpit.socket
Jul 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 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:bf:98:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.50.137/24 brd 192.168.50.255 scope global dynamic noprefixroute ens160
valid_lft 1540sec preferred_lft 1540sec
inet6 fe80::6fc9:2bb7:3a79:78b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:6b:ff:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
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
登陆后提示设定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中去)