222

一.Linux基础

1.用户类型

  • root 用户
    一个特殊的管理帐户
    也被称为超级用户
    root已接近完整的系统控制
    对系统损害几乎有无限的能力
    除非必要,不要登录为 root
  • 普通( 非特权 )用户
    权限有限
    造成损害的能力比较有限

2.终端 terminal

(1)终端类型
  • 控制台终端: /dev/console
  • 串行终端:/dev/ttyS#
  • 虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#
  • 图形终端:startx, xwindows
    CentOS 6: Ctrl + Alt + F7
    CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
  • 伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
(2)tty 查看当前的终端设备命令
# centos系统
[13:37:56 root@centos8-fosun ~]#tty
/dev/pts/0

# ubuntu系统
[15:04:29 felix@ubuntu1804-fosun netplan]$tty
/dev/pts/0

3.交互式接口

交互式接口:启动终端后,在终端设备附加一个交互式应用程序

(1)接口类型:
  • GUI:Graphic User Interface
    X protocol, window manager, desktop
    Desktop:
    GNOME (C, 图形库gtk),
    KDE (C++,图形库qt)
    XFCE (轻量级桌面)
  • CLI:Command Line Interface
    shell程序
(2)shell

img

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行

shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给该程序并执行

shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能,由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替

(3)shell分类
  • sh:Steve Bourne
  • bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
  • csh:c shell , C 语言风格
  • tcsh
  • ksh :Korn Shell, AIX 默认 shell
  • zsh: MacOS默认shell
(4)bash shell

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与sh兼容

#显示当前使用的shell
[15:42:00 root@centos8-fosun ~]#echo $SHELL
/bin/bash

#显示当前系统使用的所有shell
[15:42:04 root@centos8-fosun ~]#cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/csh
/bin/tcsh
/usr/bin/csh
/usr/bin/tcsh
/usr/bin/tmux
/bin/tmux

[15:42:00 felix@ubuntu1804-fosun ~]$echo $SHELL
/bin/bash
[15:42:19 felix@ubuntu1804-fosun ~]$cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen
[15:43:09 felix@
(5)安装额外的csh
# centos系统
[15:42:04 root@centos8-fosun ~]# yum install csh	# 安装

[15:42:04 root@centos8-fosun ~]# cat /etc/shells 	# 查看系统所有shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

# ubuntu1804系统
[15:50:13 felix@ubuntu1804-fosun ~]$sudo apt install csh
[sudo] password for felix: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  csh
0 upgraded, 1 newly installed, 0 to remove and 69 not upgraded.
Need to get 243 kB of archives.
After this operation, 358 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 csh amd64 20110502-3ubuntu0.18.04.1 [243 kB]
Fetched 243 kB in 2s (127 kB/s)
Selecting previously unselected package csh.
(Reading database ... 67163 files and directories currently installed.)
Preparing to unpack .../csh_20110502-3ubuntu0.18.04.1_amd64.deb ...
Unpacking csh (20110502-3ubuntu0.18.04.1) ...
Setting up csh (20110502-3ubuntu0.18.04.1) ...
update-alternatives: using /bin/bsd-csh to provide /bin/csh (csh) in auto mode
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
(6)shell中安装和打开firefox

xshell中:

1.yum install firefox libglvnd-glx

2.windows中安装Xmanager 7,并启动Xmanager - Passive,查看右下角图标数字

3.export DISPLAY=10.10.10.20:0.0

4.启动firefox

image-20211121165327570

image-20211121165918329

MobaXterm中:

1. yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 firefox  mailx 
2. exit
3. firefox 

image-20211121165842530

4.设置主机名命令

hostname查看和修改主机名

#临时生效
hostname NAME

#持久生效,支持CentOS7和Ubuntu18.04以上版本
hostnamectl set-hostname NAME

[15:42:04 root@centos8-fosun ~]# hostname fosun-zd-sh-app1

[15:42:04 root@centos8-fosun ~]# hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...

Query or change system hostname.

  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[USER@]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname

Commands:
  status                 Show current hostname settings
  set-hostname NAME      Set system hostname
  set-icon-name NAME     Set icon name for host
  set-chassis NAME       Set chassis type for host
  set-deployment NAME    Set deployment environment for host
  set-location NAME      Set location for host
[root@FXCZBS0105-Mange ~]# hostnamectl set-hostname centos7.9-1

注意:

  • 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
  • 有些软件对主机名有特殊要求

5.命令提示符 prompt

登录Linux后,默认的系统命令提示符毫无没有个性,无法明显辨别生产和测试环境,而导致误操作。
可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误

CentOS和Ubuntu默认的提示符:

#CentOS默认提示符
[root@localhost ~]#
#Ubuntu默认提示符
root@ubuntu1804:~#

其中 # 代表管理员,$ 代表普通用户

显示提示符格式:

[root@centos8 ~]#echo $PS1
\[\e[1;35m\][\u@\h \W]\$\[\e[0m\]

修改提示符格式:

[15:51:07 root@centos8-fosun ~]#echo $PS1
\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$

[16:02:15 felix@ubuntu1804-fosun ~]$echo $PS1
\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$

提示符格式说明:

\e 控制符\033
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数
# 开机后命令历史数

持久保存提示符格式:

# centos系统
[root@centos8-fosun ~]#echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh 
[root@centos8-fosun ~]#exit
logout
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(172.16.6.240) at 16:09:48.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 172.16.6.240:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Sun Nov 21 13:37:56 2021 from 10.10.10.87
[16:09:49 root@centos8-fosun ~]#

# ubuntu系统
[root@ubuntu1804 ~]#echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' >> .bashrc
[root@ubuntu1804 ~]#tail -1 .bashrc
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"

6.执行命令

(1)shell执行的命令分类
  • 内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
  • 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行
    完毕后从内存中删除

区别内部和外部命令的方法:type

type COMMAND

示例:

[12:09:21 felix@ubuntu1804-fosun ~]$type echo
echo is a shell builtin

[12:11:22 felix@ubuntu1804-fosun ~]$type tar
tar is /bin/tar
(2)执行内部命令

help 命令列内部命令:

image-20211121162456887

enable 管理内部命令

  • enable cmd 启用内部命令
  • enable –n cmd 禁用内部命令
  • enable –n 查看所有禁用的内部命令
[16:26:20 root@centos8-fosun ~]#enable -n echo
[16:26:40 root@centos8-fosun ~]#enable -n
enable -n echo
[16:26:43 root@centos8-fosun ~]#enable echo
[16:27:08 root@centos8-fosun ~]#enable -n
[16:27:12 root@centos8-fosun ~]#
[16:27:12 root@centos8-fosun ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(3)执行外部命令
a.where和which命令区别
whereis COMMAND	搜索命令所在路径及帮助文档所在位置
Usage:
 whereis [options] [-BMS <dir>... -f] <name>

Locate the binary, source, and manual-page files for a command.

Options:
 -b         search only for binaries
 -B <dirs>  define binaries lookup path
 -m         search only for manuals and infos
 -M <dirs>  define man and info lookup path
 -s         search only for sources
 -S <dirs>  define sources lookup path
 -f         terminate <dirs> argument list
 -u         search for unusual entries
 -l         output effective lookup paths

 -h, --help     display this help
 -V, --version  display version


which COMMAND	搜索命令所在路径及别名
Usage: /usr/bin/which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

  --version, -[vV] Print version and exit successfully.
  --help,          Print this help and exit successfully.
  --skip-dot       Skip directories in PATH that start with a dot.
  --skip-tilde     Skip directories in PATH that start with a tilde.
  --show-dot       Don't expand a dot to current directory in output.
  --show-tilde     Output a tilde for HOME directory for non-root.
  --tty-only       Stop processing options on the right if not on tty.
  --all, -a        Print all matches in PATH, not just the first
  --read-alias, -i Read list of aliases from stdin.
  --skip-alias     Ignore option --read-alias; don't read stdin.
  --read-functions Read shell functions from stdin.
  --skip-functions Ignore option --read-functions; don't read stdin.

[16:33:37 root@centos8-fosun ~]#whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[16:33:51 root@centos8-fosun ~]#whereis date
date: /usr/bin/date /usr/share/man/man1/date.1.gz /usr/share/man/man1p/date.1p.gz
[16:34:51 root@centos8-fosun ~]#whereis ntpdate
ntpdate: /usr/local/bin/ntpdate



[16:38:24 root@centos8-fosun ~]#which ntpdate
/usr/local/bin/ntpdate
[16:38:31 root@centos8-fosun ~]#which -a --skip-alias ntpdate
/usr/local/bin/ntpdate

[16:40:47 root@centos8-fosun ~]#which ls
alias ls='ls --color=auto'
	/usr/bin/ls
b.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 命令常见用法

  • hash 显示hash缓存

  • hash -l 显示hash缓存,可作为输入使用

  • hash -p path name 将命令全路径path起别名为name

  • hash -t name 打印缓存中name的路径

  • hash -d name 清除name缓存

  • hash -r 清除缓存

[16:42:09 root@centos8-fosun ~]#hash
hits	command
   5	/usr/bin/whereis
   1	/usr/bin/ls
   1	/usr/bin/clear

7.命名别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行

(1)显示别名
# 查看系统中所有命名别名
[17:04:02 root@centos8-fosun ~]#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; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
(2)命名别名
alias NAME='VALUE'

扫描新增加的磁盘:

[root@centos8 ~]#alias scandisk='echo - - - >/sys/class/scsi_host/host0/scan;echo - - - >
/sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'
(3)取消别名
unalias NAME
unalias -a 取消所有别名
[17:12:26 root@centos8-fosun ~]#alias kkk='ls -la'
[17:12:38 root@centos8-fosun ~]#kkk
total 36
dr-xr-x---.  4 root root  177 Nov 21 16:54 .
dr-xr-xr-x. 18 root root  236 Nov 17 09:20 ..
-rw-------.  1 root root 5087 Nov 21 16:09 .bash_history
-rw-r--r--.  1 root root   18 May 11  2019 .bash_logout
-rw-r--r--.  1 root root  176 May 11  2019 .bash_profile
-rw-r--r--.  1 root root  176 May 11  2019 .bashrc
drwx------.  3 root root   21 Nov 17 21:03 .cache
-rw-r--r--.  1 root root  100 May 11  2019 .cshrc
drwx------.  5 root root   66 Nov 17 21:03 .mozilla
-rw-r--r--.  1 root root  129 May 11  2019 .tcshrc
-rw-------.  1 root root  981 Nov 18 14:55 .viminfo
-rw-------.  1 root root  118 Nov 21 16:54 .Xauthority
[17:12:45 root@centos8-fosun ~]#unalias kkk
[17:12:59 root@centos8-fosun ~]#kkk
-bash: kkk: command not found
[17:13:00 root@centos8-fosun ~]#
(4)持久化别名:

如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc
[root@centos8 ~]#echo "alias scandisk='echo - - - >/sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'" >> .bashrc

编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

source /path/to/config_file
. /path/to/config_file
(5)命令执行优先级

别名 > 内部命令 > 外部命令

8.命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]
COMMAND [COMMAND] [COMMAND] ....

选项:用于启用或关闭命令的某个或某些功能

  • 短选项:UNIX 风格选项,-c 例如:-l, -h
  • 长选项:GNU风格选项,--word 例如:--all, --human
  • BSD风格选项: 一个字母,例如:a,使用相对较少

参数:命令的作用对象,比如:文件名,用户名等

[root@centos8 ~]#id -u wang
1000
[root@centos8 ~]#ls -a
[root@centos8 ~]#ls --all
[root@centos8 ~]#free -h
[root@centos8 ~]#free --human
[root@centos8 ~]#ps a

注意:

  • 多个选项以及多参数和命令之间使用空白字符分隔
  • 取消和结束命令执行:Ctrl+c,Ctrl+d
  • 多个命令可以用 ";" 符号分开
  • 一个命令可以用\分成多行

9.常用命令

(1)查看硬件信息
a.查看CPU
  • lscpu 查看CPU信息
  • cat /proc/cpuinfo 查看CPU信息
[17:20:45 root@centos8-fosun ~]# lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           4
NUMA node(s):        1
Vendor ID:           GenuineIntel
BIOS Vendor ID:      GenuineIntel
CPU family:          6
Model:               62
Model name:          Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
BIOS Model name:     Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
Stepping:            4
CPU MHz:             2000.000
BogoMIPS:            4000.00
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            20480K
NUMA node0 CPU(s):   0-3
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear flush_l1d arch_capabilities
[17:39:00 root@centos8-fosun ~]#cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping	: 4
microcode	: 0x42e
cpu MHz		: 2000.000
cache size	: 20480 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear flush_l1d arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4000.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping	: 4
microcode	: 0x42e
cpu MHz		: 2000.000
cache size	: 20480 KB
physical id	: 2
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear flush_l1d arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4000.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor	: 2
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping	: 4
microcode	: 0x42e
cpu MHz		: 2000.000
cache size	: 20480 KB
physical id	: 4
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 4
initial apicid	: 4
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear flush_l1d arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4000.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor	: 3
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping	: 4
microcode	: 0x42e
cpu MHz		: 2000.000
cache size	: 20480 KB
physical id	: 6
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 6
initial apicid	: 6
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear flush_l1d arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4000.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:
(2)查看内存大小
  • free
  • cat /proc/meminfo
[17:39:26 root@centos8-fosun ~]#free
              total        used        free      shared  buff/cache   available
Mem:        7953676      348768     6693044        8800      911864     7339108
Swap:      12582908           0    12582908
[17:46:30 root@centos8-fosun ~]#free -m
              total        used        free      shared  buff/cache   available
Mem:           7767         340        6536           8         890        7167
Swap:         12287           0       12287
[17:46:38 root@centos8-fosun ~]#cat /proc/meminfo 
MemTotal:        7953676 kB
MemFree:         6693296 kB
MemAvailable:    7339360 kB
Buffers:            6796 kB
Cached:           832304 kB
SwapCached:            0 kB
Active:           538096 kB
Inactive:         404572 kB
Active(anon):     104968 kB
Inactive(anon):     7396 kB
Active(file):     433128 kB
Inactive(file):   397176 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      12582908 kB
SwapFree:       12582908 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        101540 kB
Mapped:            88956 kB
Shmem:              8800 kB
KReclaimable:      72764 kB
Slab:             178172 kB
SReclaimable:      72764 kB
SUnreclaim:       105408 kB
KernelStack:        4032 kB
PageTables:         8340 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16559744 kB
Committed_AS:     396836 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             3072 kB
HardwareCorrupted:     0 kB
AnonHugePages:     22528 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      243056 kB
DirectMap2M:     8144896 kB
(3)查看磁盘和分区
  • lsblk
  • cat /proc/partitions
[17:49:09 root@centos8-fosun ~]#lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot/efi
├─sda2   8:2    0    1G  0 part /boot
├─sda3   8:3    0  100G  0 part /
├─sda4   8:4    0   50G  0 part /data
└─sda5   8:5    0   12G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom  
[17:49:12 root@centos8-fosun ~]#cat /proc/partitions 
major minor  #blocks  name

   8        0  209715200 sda
   8        1    1048576 sda1
   8        2    1048576 sda2
   8        3  104857600 sda3
   8        4   52428800 sda4
   8        5   12582912 sda5
  11        0    1048575 sr0
(4)查看系统版本信息

a.查看系统架构 arch

[17:49:18 root@centos8-fosun ~]#arch
x86_64
[16:22:53 felix@ubuntu1804-fosun ~]$arch
x86_64

b.查看系统内核版本

# centos8
[17:50:41 root@centos8-fosun ~]#uname -r
4.18.0-240.el8.x86_64

# ubuntu1804
[17:50:56 felix@ubuntu1804-fosun ~]$uname -r
4.15.0-162-generic

(5)查看操作系统发行版本

# centos系统
[17:51:51 root@centos8-fosun ~]#cat /etc/redhat-release 
CentOS Linux release 8.3.2011

[17:53:37 root@centos8-fosun ~]#cat /etc/os-release 
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"


# 使用lsb_release命令之前先安装 yum install redhat-lsb-core 
# yum provides lsb_release 查询命令所在的包

[root@centos8-fosun ~]# yum provides lsb_release
Last metadata expiration check: 1:23:37 ago on Wed 17 Nov 2021 10:23:50 PM CST.
redhat-lsb-core-4.1-47.el8.i686 : LSB Core module support
Repo        : appstream
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-47.el8.x86_64 : LSB Core module support
Repo        : @System
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-47.el8.x86_64 : LSB Core module support
Repo        : appstream
Matched from:
Filename    : /usr/bin/lsb_release

[17:53:44 root@centos8-fosun ~]#lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 8.3.2011
Release:	8.3.2011
Codename:	n/a


# ubuntu系统
[17:52:12 felix@ubuntu1804-fosun ~]$cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

[17:55:15 felix@ubuntu1804-fosun ~]$lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic
(5)查看进程命令 ps

Centos上进程有5种状态:

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • D 不可中断 uninterruptible sleep (usually IO)
  • Z 僵死 a defunct (”zombie”) process
  • T 停止 traced or stopped
# 命令格式 
ps [options] [–help]  显示瞬间行程 (process) 的动态

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

au(x) 输出格式 :

image-20211121181932101

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
具体命令解释如下:
  1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。

  2)ps -A 显示所有程序。

  3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

   4)ps -e 此参数的效果和指定”A”参数相同。 例如: ps -e|grep sshd

  5)ps e 列出程序时,显示每个程序所使用的环境变量。

  6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。

  7)ps -H 显示树状结构,表示程序间的相互关系。

  8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。

  9)ps s 采用程序信号的格式显示程序状况。

  10)ps S 列出程序时,包括已中断的子程序资料。

  11)ps -t<终端机编号>	指定终端机编号,并列出属于该终端机的程序的状况。

  12)ps u	以用户为主的格式来显示程序状况。

  13)ps x	显示所有程序,不以终端机来区分。

  最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
(6)查看进程命令 top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,在终端输入top,得到下面结果:

image-20211121182929116

如上图所示,top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

第一部分 -- 最上部的系统信息栏 零度科技提供技术支持

第一行(top):
“18:29:05为系统当前时刻;
“up 3 days,21:17”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;本服务器有32个CPU,虽然数值为6,但负载还是有些吃力的。

第二行(Tasks):
“224 total”为当前系统进程总数;
“1 running”为当前运行中的进程数;
“223 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数;
“0 zombie”为被复原的进程数;

第三行(Cpus):
分别表示了 CPU 当前的使用率;

Cpu(s): 0.0 us	用户空间占用CPU百分比
1.4 sy	内核空间占用CPU百分比
0.0 ni	用户进程空间内改变过优先级的进程占用CPU百分比
97.1 id	空闲CPU百分比
0 wa	等待输入输出的CPU时间百分比

第四行(Mem):
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;

第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

第二部分 -- 中间部分的内部命令提示栏

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:  

s - 改变画面更新频率,如:s 60,表示每隔一分钟刷新一次屏幕;
N - 以 PID 的大小的顺序排列表示进程列表
P - 以 CPU 占用率大小的顺序排列进程列表
M - 以内存占用率大小的顺序排列进程列表
h - 显示帮助
n - 设置在进程列表所显示进程的数量
q - 退出 top

第三部分 -- 最下部分的进程列表栏

以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式。

一般的,我们通过远程监控的方式对服务器进行维护,让服务器本地的终端实时的运行 top ,是在服务器本地监视服务器状态的快捷便利之一。
以下是参考的信息说明:

序号	列名	含义
a	PID	进程id
b	PPID	父进程id
c	RUSER	Real user name
d	UID	进程所有者的用户id
e	USER	进程所有者的用户名
f	GROUP	进程所有者的组名
g	TTY	启动进程的终端名。不是从终端启动的进程则显示为 ?
h	PR	优先级
i	NI	nice值。负值表示高优先级,正值表示低优先级
j	P	最后使用的CPU,仅在多CPU环境下有意义
k	%CPU	上次更新到现在的CPU时间占用百分比
l	TIME	进程使用的CPU时间总计,单位秒
m	TIME+	进程使用的CPU时间总计,单位1/100秒
n	%MEM	进程使用的物理内存百分比
o	VIRT	进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p	SWAP	进程使用的虚拟内存中,被换出的大小,单位kb。
q	RES	进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r	CODE	可执行代码占用的物理内存大小,单位kb
s	DATA	可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t	SHR	共享内存大小,单位kb
u	nFLT	页面错误次数
v	nDRT	最后一次写入到现在,被修改过的页面数。
w	S	进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x	COMMAND	命令名/命令行
y	WCHAN	若该进程在睡眠,则显示睡眠中的系统函数名
z	Flags	任务标志,参考 sched.h
linux中top与ps区别
一:ps命令
以下是 ps 的最简单形式:
$ ps
PID TTY TIME CMD
3884 pts/1 00:00:00 bash
3955 pts/2 00:00:00 more
3956 pts/5 00:00:05 sqlplus
• PID 是进程的标识号。
• TTY 是进程所属的终端控制台。
• TIME 列是进程所使用的总的 CPU 时间。
• CMD 列列出正在执行的命令行。
使用带有 -ef 选项的 ps,返回系统中所有用户的所有进程的完整列表。一般将此 ps 命令的结果传送到 grep 中,则该结果更易于查看。例如:

$ ps -ef | grep oracle

UID PID PPID C STIME TTY TIME CMD
oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1
oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1
oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1
oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1
oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1
oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1
oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1
oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1
oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1
oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1

-e : 在命令执行后显示环境
  -f : 完整显示输出
• 标为 C 的列是由 CPU 用于计算执行优先级的因子。
• STIME 是指进程的启动时间。
• 问号表示这些进程不属于任何 TTY,因为它们是由系统启动的。

主要参数说明:

\1) 进程用户ID(UID),
虽然 uid 通常是指数字型的标识,但在第一列下指定的是用户名,标记为 UID
\2) 进程ID (PID)
\3) 父进程ID (PPID)
PPID 是父进程的标识号。对于 Oracle 进程,这里的标识号为 1 — 它是 init 进程(所有进程的父进程)的 id,因为在本系统中安装的 Oracle 是作为登录进程的一部分而启动的
\4) CPU 调度情况 (C)
即是是由 CPU 用于计算执行优先级的因子。
\5) 进程启动的时间 (STIME)
\6) 进程共占用CPU的时间(TIME)
\7) 启动进程的命令 (CMD)
8)问号表示这些进程不属于任何 TTY,因为它们是由系统启动的。  

使用PS命令分析系统性能的方法主要有:
\1) 首先,根据用户ID寻找由同一用户执行的许多相似任务,这些任务很可能是因为用户运行的某个脚本程序在后台启动多个进程而造成的。
\2) 接下来,检查TIME域中各进程累计占用CPU的时间,如果有某个进程累计占用了大量的CPU时间,通常说明该进程可能陷入了无限循环,或该京城的某写逻辑出了错
\3) 找到那些已陷入死锁的进程ID后,就可以使用kill命令强制终止该进程了。

二:top命令
Ps 只为您提供当前进程的快照。要即时查看最活跃的进程,可使用 top。
Top 实时地提供进程信息。它还拥有交互式的状态,允许用户输入命令,如 n 后面跟有 5 或 10 等数字。其结果是指示 top 显示 5 或 10 个最活跃的进程。 Top 持续运行,直到您按 “q” 退出 top 为止。
Top中的几个隐含参数:
top中按1键和F键的参数:
按1键可以等到多个cpu的情况
按F(f:当前状态,可以按相应的字母键做top的定制输出)后得参数:
对F键和f键的区别:
如果进入F键区可以做进程显示的排序,如果进入f键区的话则可以选择显示的多个项目:
\* A: PID = Process Id //进程ID
b: PPID = Parent Process Pid //父进程ID
c: RUSER = Real user name //真正的(Real)所属用户名称
d: UID = User Id //用户ID
e: USER = User Name //用户名称
f: GROUP = Group Name //组名称
g: TTY = Controlling Tty //控制
h: PR = Priority //优先权
i: NI = Nice value //优先级得值(负数代表较高的优先级,正数是较低的优先级.0标志改优先级的值是不会被调整的)
j: #C = Last used cpu (SMP) //随后使用的cpu比率
k: %CPU = CPU usage //cpu使用比率
l: TIME = CPU Time //cpu占用时间
m: TIME+ = CPU Time, hundredths //cpu%比
n: %MEM = Memory usage (RES) //内存使用率
o: VIRT = Virtual Image (kb) //虚拟镜像(VIRT = SWAP + RES:所有进程使用的虚拟内存值,包括所有的代码,数据,共享库已经被swapped out的)
p: SWAP = Swapped size (kb) //交换空间大小(所有虚拟内存中的镜像)
q: RES = Resident size (kb) //已经使用了的常驻内存(Resident size):RES = CODE + DATA
r: CODE = Code size (kb) //分配给执行代码的物理内存
s: DATA = Data+Stack size (kb) //data+stack:物理内存中非存放代码的空间,用于存放数据
t: SHR = Shared Mem size (kb) //共享内存大小.放映了一个task的潜在可以供别人使用的内存的大小
u: nFLT = Page Fault count //内存叶错误的数量
v: nDRT = Dirty Pages count //脏页的数量
w: S = Process Status //进程状态:( R )为运行或可执行的,( S )为该程序正在睡眠中,( T )正在侦测或者是停止了,( Z )僵尸程序
x: COMMAND = Command name/line //进程启动命令行参数
y: WCHAN = Sleeping in Function //在睡眠中
z: Flags = Task Flags
[18:19:10 root@centos8-fosun ~]# ps -u
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         956  0.0  0.0  13632  1588 tty1     Ss+  Nov17   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root       24112  0.0  0.0  27116  5116 pts/0    Ss   16:09   0:00 -bash
root       24470  0.0  0.0  26984  4872 pts/1    Ss+  16:54   0:00 -bash
root       25527  0.0  0.0  58696  4008 pts/0    R+   18:21   0:00 ps -u

[18:20:45 felix@ubuntu1804-fosun ~]$ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
felix    20053  0.0  0.0  21592  5424 pts/0    Ss   13:38   0:00 -bash
felix    20885  0.0  0.0  38372  3516 pts/0    R+   18:21   0:00 ps u
(7)日期和时间

Linux的两种时钟

  • 系统时钟:由Linux内核通过CPU的工作频率进行的,date
  • 硬件时钟:主板,clock和hwclock

date命令 显示和设置系统时间

[18:38:48 root@centos8-fosun ~]#date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

Mandatory arguments to long options are mandatory for short options too.
  -d, --date=STRING          display time described by STRING, not 'now'
      --debug                annotate the parsed date,
                              and warn about questionable usage to stderr
  -f, --file=DATEFILE        like --date; once for each line of DATEFILE
  -I[FMT], --iso-8601[=FMT]  output date/time in ISO 8601 format.
                               FMT='date' for date only (the default),
                               'hours', 'minutes', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14T02:34:56-06:00
  -R, --rfc-email            output date and time in RFC 5322 format.
                               Example: Mon, 14 Aug 2006 02:34:56 -0600
      --rfc-3339=FMT         output date/time in RFC 3339 format.
                               FMT='date', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14 02:34:56-06:00
  -r, --reference=FILE       display the last modification time of FILE
  -s, --set=STRING           set time described by STRING
  -u, --utc, --universal     print or set Coordinated Universal Time (UTC)
      --help     display this help and exit
      --version  output version information and exit

FORMAT controls the output.  Interpreted sequences are:

  %%   a literal %
  %a   locale's abbreviated weekday name (e.g., Sun)
  %A   locale's full weekday name (e.g., Sunday)
  %b   locale's abbreviated month name (e.g., Jan)
  %B   locale's full month name (e.g., January)
  %c   locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
  %C   century; like %Y, except omit last two digits (e.g., 20)
  %d   day of month (e.g., 01)
  %D   date; same as %m/%d/%y
  %e   day of month, space padded; same as %_d
  %F   full date; same as %Y-%m-%d
  %g   last two digits of year of ISO week number (see %G)
  %G   year of ISO week number (see %V); normally useful only with %V
  %h   same as %b
  %H   hour (00..23)
  %I   hour (01..12)
  %j   day of year (001..366)
  %k   hour, space padded ( 0..23); same as %_H
  %l   hour, space padded ( 1..12); same as %_I
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale's equivalent of either AM or PM; blank if not known
  %P   like %p, but lower case
  %q   quarter of year (1..4)
  %r   locale's 12-hour clock time (e.g., 11:11:04 PM)
  %R   24-hour hour and minute; same as %H:%M
  %s   seconds since 1970-01-01 00:00:00 UTC
  %S   second (00..60)
  %t   a tab
  %T   time; same as %H:%M:%S
  %u   day of week (1..7); 1 is Monday
  %U   week number of year, with Sunday as first day of week (00..53)
  %V   ISO week number, with Monday as first day of week (01..53)
  %w   day of week (0..6); 0 is Sunday
  %W   week number of year, with Monday as first day of week (00..53)
  %x   locale's date representation (e.g., 12/31/99)
  %X   locale's time representation (e.g., 23:13:48)
  %y   last two digits of year (00..99)
  %Y   year
  %z   +hhmm numeric time zone (e.g., -0400)
  %:z  +hh:mm numeric time zone (e.g., -04:00)
  %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
  %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
  %Z   alphabetic time zone abbreviation (e.g., EDT)

示例:

[20:05:03 root@centos8-fosun ~]#date -s '2021-11-20 22:10:00'
Sat Nov 20 22:10:00 CST 2021
[22:10:00 root@centos8-fosun ~]#date
Sat Nov 20 22:10:01 CST 2021
[19:26:04 root@centos8-fosun ~]# date -s 'yesterday'	# 修改当前日期为昨天的日期
Sat Nov 20 19:26:10 CST 2021
[19:26:10 root@centos8-fosun ~]#date
Sat Nov 20 19:26:11 CST 2021
[19:26:11 root@centos8-fosun ~]#clock -s	# 将硬件时间作为标准修正系统时间或者使用hwclock -s
[19:26:15 root@centos8-fosun ~]#date
Sun Nov 21 19:26:16 CST 2021
[19:26:16 root@centos8-fosun ~]#


[19:33:16 root@centos8-fosun ~]# date -s 'yesterday'
Sat Nov 20 19:33:20 CST 2021
[19:33:20 root@centos8-fosun ~]#clock
2021-11-21 19:33:22.570937+08:00
[19:33:22 root@centos8-fosun ~]#clock -w	# 将系统时间作为标准修正硬件时间或者使用hwclock -w
[19:33:41 root@centos8-fosun ~]#clock
2021-11-20 19:33:44.680468+08:00

# date "+%F %T"
[19:58:14 root@centos8-fosun ~]#date "+%F %T"	# 按格式输出时间
2021-11-21 19:58:15

%F   full date; same as %Y-%m-%d   --相当于年月日格式
%T   time; same as %H:%M:%S    --相当于时分秒格式

# -d 参数
[20:02:49 root@centos8-fosun ~]#date "+%F %T" -d "-2day"	# 显示2天前的时间,并不修改时间
2021-11-19 20:02:57
[20:02:57 root@centos8-fosun ~]#date "+%F %T" -d "+2day"	# 显示2天后的时间,并不修改时间
2021-11-23 20:03:00

时区:

timedatectl 设置或显示时区命令

[19:42:44 root@centos8-fosun ~]#timedatectl --help
timedatectl [OPTIONS...] COMMAND ...

Query or change system time and date settings.

  -h --help                Show this help message
     --version             Show package version
     --no-pager            Do not pipe output into a pager
     --no-ask-password     Do not prompt for password
  -H --host=[USER@]HOST    Operate on remote host
  -M --machine=CONTAINER   Operate on local container
     --adjust-system-clock Adjust system clock when changing local RTC mode
     --monitor             Monitor status of systemd-timesyncd
  -p --property=NAME       Show only properties by this name
  -a --all                 Show all properties, including empty ones
     --value               When showing properties, only print the value

Commands:
  status                   Show current time settings
  show                     Show properties of systemd-timedated
  set-time TIME            Set system time
  set-timezone ZONE        Set system time zone
  list-timezones           Show known time zones
  set-local-rtc BOOL       Control whether RTC is in local time
  set-ntp BOOL             Enable or disable network time synchronization

systemd-timesyncd Commands:
  timesync-status          Show status of systemd-timesyncd
  show-timesync            Show properties of systemd-timesyncd

查看当前系统时区:

[19:36:09 root@centos8-fosun ~]#timedatectl status
               Local time: Sun 2021-11-21 19:42:44 CST
           Universal time: Sun 2021-11-21 11:42:44 UTC
                 RTC time: Sun 2021-11-21 11:42:44
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

修改系统时区:

[19:44:57 root@centos8-fosun ~]#timedatectl set-timezone Asia/Hong_Kong
[19:50:49 root@centos8-fosun ~]#ll /etc/localtime 
lrwxrwxrwx. 1 root root 36 Nov 21 19:50 /etc/localtime -> ../usr/share/zoneinfo/Asia/Hong_Kong
[19:50:59 root@centos8-fosun ~]#date
Sun Nov 21 19:51:04 HKT 2021
[19:51:04 root@centos8-fosun ~]#timedatectl set-timezone Asia/Shanghai
[19:51:27 root@centos8-fosun ~]#ll /etc/localtime 
lrwxrwxrwx. 1 root root 35 Nov 21 19:51 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[19:51:30 root@centos8-fosun ~]#date
Sun Nov 21 19:51:36 CST 2021

日历:cal

[19:52:18 root@centos8-fosun ~]#cal
    November 2021   
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30            
                    
[19:54:00 root@centos8-fosun ~]#cal 2 2021
    February 2021   
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28   
(8)关机和重启
关机:
	halt
	poweroff
重启:
	reboot
        -f: 强制,不调用shutdown
        -p: 切断电源
关机或重启:shutdown
    -r: reboot
    -h: halt
    -c:cancel
    TIME:无指定,默认相当于+1(CentOS7)
        now: 立刻,相当于+0
        +#: 相对时间表示法,几分钟之后;例如 +3
        hh:mm: 绝对时间表示,指明具体时间
(9)用户登录信息查看命令
  • whoami 显示当前登录有效用户
  • who 系统当前所有的登录会话
  • w 系统当前所有的登录会话及所做的操作
[20:06:31 root@centos8-fosun ~]#whoami 
root
[20:22:01 root@centos8-fosun ~]#who am i
root     pts/0        2021-11-21 16:09 (10.10.10.87)

[20:22:05 root@centos8-fosun ~]#who
root     pts/0        2021-11-21 16:09 (10.10.10.87)

[20:22:12 root@centos8-fosun ~]#w
 20:22:14 up 3 days, 23:10,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.10.10.87      16:09    3.00s  0.85s  0.02s w
(10)文本编辑命令
  • nano 工具可以实现文本的编辑,上手容易,适合初学者
  • gedit 工具是图形工具

修改登录提示文件 /etc/mtod

                                                                                                         
                                                                                                         
FFFFFFFFFFFFFFFFFFFFFF     OOOOOOOOO        SSSSSSSSSSSSSSS UUUUUUUU     UUUUUUUUNNNNNNNN        NNNNNNNN
F::::::::::::::::::::F   OO:::::::::OO    SS:::::::::::::::SU::::::U     U::::::UN:::::::N       N::::::N
F::::::::::::::::::::F OO:::::::::::::OO S:::::SSSSSS::::::SU::::::U     U::::::UN::::::::N      N::::::N
FF::::::FFFFFFFFF::::FO:::::::OOO:::::::OS:::::S     SSSSSSSUU:::::U     U:::::UUN:::::::::N     N::::::N
  F:::::F       FFFFFFO::::::O   O::::::OS:::::S             U:::::U     U:::::U N::::::::::N    N::::::N
  F:::::F             O:::::O     O:::::OS:::::S             U:::::D     D:::::U N:::::::::::N   N::::::N
  F::::::FFFFFFFFFF   O:::::O     O:::::O S::::SSSS          U:::::D     D:::::U N:::::::N::::N  N::::::N
  F:::::::::::::::F   O:::::O     O:::::O  SS::::::SSSSS     U:::::D     D:::::U N::::::N N::::N N::::::N
  F:::::::::::::::F   O:::::O     O:::::O    SSS::::::::SS   U:::::D     D:::::U N::::::N  N::::N:::::::N
  F::::::FFFFFFFFFF   O:::::O     O:::::O       SSSSSS::::S  U:::::D     D:::::U N::::::N   N:::::::::::N
  F:::::F             O:::::O     O:::::O            S:::::S U:::::D     D:::::U N::::::N    N::::::::::N
  F:::::F             O::::::O   O::::::O            S:::::S U::::::U   U::::::U N::::::N     N:::::::::N
FF:::::::FF           O:::::::OOO:::::::OSSSSSSS     S:::::S U:::::::UUU:::::::U N::::::N      N::::::::N
F::::::::FF            OO:::::::::::::OO S::::::SSSSSS:::::S  UU:::::::::::::UU  N::::::N       N:::::::N
F::::::::FF              OO:::::::::OO   S:::::::::::::::SS     UU:::::::::UU    N::::::N        N::::::N
FFFFFFFFFFF                OOOOOOOOO      SSSSSSSSSSSSSSS         UUUUUUUUU      NNNNNNNN         NNNNNNN
                                                                                                         
                                                                                                         
                                                                                                         
                                                                                                         
                                                                                                         
                                                                                                         
                                                                                                         

(11)输出信息 echo

基本用法:echo 命令可以将后面跟的字符进行输出

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

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

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

[20:22:14 root@centos8-fosun ~]#echo $PS1
\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$
[20:33:44 root@centos8-fosun ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

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

# 选项
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

高级用法:在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
具有颜色的字符,其格式如下:

"\033[字符背景颜色;字体颜色m字符串\033[0m"

说明:
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
#字体颜色: 30--37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色

加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:

\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶

10.字符集和ASCII码

(1)ASCII码

计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for InformationInterchange) 码
ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0

[root@centos8 ~]#man ascii 查看ASCII码

image-20211121204625467

(2)Unicode

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定

Unicode编码方案:

  • UTF-8:变长,1到4个字节
  • UTF-16:变长,2或4个字节
  • UTF-32:固定长度,4个字节

image-20211121204906206

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-20211121205050188

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

[20:51:22 root@centos8-fosun ~]#echo $LANG
en_US.UTF-8

[20:54:10 root@centos8-fosun ~]#LANG=zh_CN.UTF-8
[20:54:18 root@centos8-fosun ~]#echo LANG=zh_CN.UTF-8
LANG=zh_CN.UTF-8
(3)Windows和Unix字符互相转换
# windows字符转Unix字符:
方法1:dos2unix
yum install dos2unix

dos2unix 文件名

方法2:vi编辑工具修改:
:set fileformats=dos
:set fileformats=unix
:set ff=unix   #fileformats可以简写为ff

# unix字符转windows字符
yum install unix2dos
unix2dos 文件名

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

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

把一个命令的输出打印给另一个命令的参数,放在``中的一定是有输出信息的命令

$(COMMAND) 或 `COMMAND`

""、''、``三者区别:

[root@centos8 ~]#echo "echo $HOSTNAME"
echo centos8.localdomain
[root@centos8 ~]#echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]#echo `echo $HOSTNAME`
centos8.localdomain
#结论:
单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,"最傻"
双引号:弱引用,不能识别命令,可以识别变量,"半傻不精"
反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内
容当成命令进行执行后,再交给调用反向单引号的命令继续,"最聪明"
[09:18:04 root@centos8 data]#echo "This system's name is $(hostname)"
This system's name is centos8.magedu.org
[09:18:55 root@centos8 data]#echo "I am `whoami`"
I am root
[09:15:37 root@centos8 data]#touch $(date +%F).log
[09:16:29 root@centos8 data]#ls
2019-12-13.log
[09:16:31 root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
[09:16:34 root@centos8 data]#touch `date +%F`.txt
[09:17:14 root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt
[09:17:15 root@centos8 data]#touch `hostname`-`date +%F`.log
[09:18:02 root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt
-rw-r--r--. 1 root root 0 Dec 13 09:18 centos8.magedu.org-2019-12-13.log
[root@centos8 ~]#touch `date +%F_%H-%M-%S`.log
[root@centos8 ~]#touch `date -d '-1 day' +%F`.log
[root@centos8 ~]#ll `echo `date +%F`.txt`
-bash: .txt: command not found
ls: cannot access 'date': No such file or directory
ls: cannot access '+%F': No such file or directory
[root@centos8 ~]#ll $(echo $(date +%F).txt)
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt
[root@centos8 ~]#ll `echo $(date +%F).txt`
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt
[root@centos8 ~]#ll $(echo `date +%F`.txt)
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt

括号扩展 {}

{} 可以实现打印重复字符串的简化形式

{元素1,元素2,元素3}
{元素1..元素2}
echo file{1,3,5} 结果为:file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {1..10..2}
echo {000..20..2}
[root@centos8 ~]#echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020
[root@centos8 ~]#echo {a..z..2}
a c e g i k m o q s u w y
[root@centos8 ~]#echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i
j k l m n o p q r s t u v w x y z

关闭和启用{}的扩展功能

[root@centos8 ~]#echo $-
himBHs
[root@centos8 ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@centos8 ~]#set +B
[root@centos8 ~]#echo $-
himHs
[root@centos8 ~]#echo {1..10}
{1..10}
[root@centos8 ~]#set -B
[root@centos8 ~]#echo $-
himBHs
[root@centos8 ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10

12.tab键补全

tab 键可以实现命令及路径等补全,提高输入效率,避免出错

(1)命令补全

  • 内部命令:
  • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文
    件,第一次找到的命令即为要执行的命令
  • 命令的子命令补全,需要安装 bash-completion

注意:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表

(2)路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名如果惟一:则直接补全,否则:再次Tab给出列表

13.命令行历史

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

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]

常用选项

-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后

命令历史相关环境变量

HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T `whoami` " 显示时间和用户
HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
HISTCONTROL:控制命令历史的记录方式
ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令

持久保存变量
以上变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile

[23:53:10 root@centos8-fosun ~]#echo 'export HISTTIMEFORMAT="%F %T "' >> /etc/profile.d/env.sh
[23:53:20 root@centos8-fosun ~]#cat /etc/profile.d/env.sh
export HISTTIMEFORMAT="%F %T "
[23:53:54 root@centos8-fosun ~]# source /etc/profile
[23:56:42 root@centos8-fosun ~]#history
  417  2021-11-20 00:00:12 ntpdate 172.16.6.100
  418  2021-11-20 00:00:15 ntpdate 172.16.6.110
  419  2021-11-21 18:46:33 date
  420  2021-11-21 18:47:54 date -s --help
  421  2021-11-21 18:49:26  date -s '11/18/2021'
  422  2021-11-18 00:00:02 date
  423  2021-11-18 00:00:13 ntpdate 172.16.6.110
  424  2021-11-21 18:55:03 date --help
  425  2021-11-21 19:24:26  date -s 'yesterday'
  426  2021-11-20 19:26:02 clock -s
  427  2021-11-21 19:26:04 date
  428  2021-11-21 19:26:10  date -s 'yesterday'
  

调用命令行历史

#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入!-1 并回车执行
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数)
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
Ctrl+g:从历史搜索模式退出
#要重新调用前一个命令中最后一个参数
!$ 表示前一个命令中最后一个参数
Esc, . 点击Esc键后松开,然后点击 . 键
Alt+ . 按住Alt键的同时点击 . 键
command !^ 利用上一个命令的第一个参数做command的参数
command !$ 利用上一个命令的最后一个参数做command的参数
command !* 利用上一个命令的全部参数做command的参数
command !:n 利用上一个命令的第n个参数做command的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

13.bash的快捷键

Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出,解锁
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Ctrl + xx 光标在命令行首和光标之间移动
注意:Alt 组合快捷键经常和其它软件冲突
范例:xshell中启动 alt 键
2 获得帮助
获取帮助的能力决定了技术的能力!
多层次的帮助
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Alt + Backspace 删除左边单词
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + # 提示输入指定字符后,重复显示该字符#次

二.获取帮助

获取帮助的能力决定了技术的能力!

多层次的帮助

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

1.whatis

whatis 使用数据库来显示命令的简短描述。此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用

执行下面命令生成数据库

#CentOS 7 版本以后
mandb
#CentOS 6 版本之前
makewhatis
[root@centos8 ~]#whatis cal
cal (1) - display a calendar
cal (1p) - print a calendar
[root@centos8 ~]#man -f cal
cal (1) - display a calendar
cal (1p) - print a calendar
[root@centos8 ~]#whatis ls
ls: nothing appropriate.
#生成man相关数据库
[root@centos8 ~]#mandb
Processing manual pages under /usr/share/man...
Updating index cache for path `/usr/share/man/mann'. Wait...done.
Checking for stray cats under /usr/share/man...
...省略...
0 old database entries were purged.
[root@centos8 ~]#whatis ls
ls (1) - list directory contents

2.查看命令的帮助

(1)内部命令帮助
  • help COMMAND
  • man bash
[23:15:11 root@centos8-fosun ~]#help history 
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.
    
    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.
    
    Options:
      -c	clear the history list by deleting all of the entries
      -d offset	delete the history entry at position OFFSET.
    
      -a	append history lines from this session to the history file
      -n	read all history lines not already read from the history file
    		and append them to the history list
      -r	read the history file and append the contents to the history
    		list
      -w	write the current history to the history file
    
      -p	perform history expansion on each ARG and display the result
    		without storing it in the history list
      -s	append the ARGs to the history list as a single entry
    
    If FILENAME is given, it is used as the history file.  Otherwise,
    if HISTFILE has a value, that is used, else ~/.bash_history.
    
    If the HISTTIMEFORMAT variable is set and not null, its value is used
    as a format string for strftime(3) to print the time stamp associated
    with each displayed history entry.  No time stamps are printed otherwise.
    
    Exit Status:
    Returns success unless an invalid option is given or an error occurs.
(2)外部命令及软件帮助
  • COMMAND --help 或 COMMAND -h
  • 使用 man 手册(manual): man COMMAND
  • 信息页:info COMMAND
  • 程序自身的帮助文档:README、INSTALL、ChangeLog
  • 程序官方文档
  • 相关网站,如:技术论坛
  • 搜索引擎
(3)外部命令的--help或-h选项

显示用法总结和参数列表,大多数命令使用,但并非所有的

格式说明:

  • [] 表示可选项
  • CAPS或 <> 表示变化的数据
  • ... 表示一个列表
  • x |y| z 的意思是“ x 或 y 或 z ”
  • -abc的 意思是 -a -b –c
  • { } 表示分组
(4)man命令

man 提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
中文man需安装包

  • man-pages
  • man-pages-zh-CN

man 页面分组
不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man

  • 1:用户命令
  • 2:系统调用
  • 3:C库调用
  • 4:设备文件及特殊文件
  • 5:配置文件格式
  • 6:游戏
  • 7:杂项
  • 8:管理类的命令
  • 9:Linux 内核API

man命令的配置文件

#CentOS 6 之前版 man 的配置文件
/etc/man.config
#CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
#ubuntu man 的配置文件
/etc/manpath.config

格式:

MANPATH /PATH/TO/SOMEWHERE #指明man文件搜索位置

也可以指定位置下搜索COMMAND命令的手册页并显示

man -M /PATH/TO/SOMEWHERE COMMAND

查看man手册页

man [OPTION...] [SECTION] PAGE...
man [章节] keyword

posted @ 2021-11-24 00:17  %华&仔%  阅读(552)  评论(0编辑  收藏  举报