第二天

第二天

root  553214

wang 123456

rocky/centos

root可以直接登录

image-20240223144432879

image-20240223144500818

普通用户与管理员的区别:

普通用户 --$

root用户--#

Ubuntu

不可以直接登录,只能用命令切换root账户,但一般也不建议直接利用root登录,生产环境还是有比较大的风险的。


切换root:
sudo -i

image-20240223151005142

image-20240223150351948

image-20240223150403840

image-20240223150414212

命令:
ip a
hostname -I     #显示的就是你自己本机的ip地址,可以用xshell链接了

image-20240223150611288

image-20240223150632475

查看当前的终端设备

tty

image-20240223153642512

 who

显示当前所有登陆用户的信息

whoami
打印当前有效的用户ID对应的名称

image-20240223154202430

date 
查看时间

image-20240223154535616

Ubuntu的默认时间是UTC,如果要修改:

timedatectl  set-timezone Asia/Shanghai
date

查看内存空间

free -h

image-20240223154855619

init切换运行级别

init 3


扩展
#0  停机(千万不能把initdefault 设置为0)
#1  单用户模式
#2  多用户,没有 NFS(和级别3相似,会停止部分服务)
#3  完全多用户模式
#4  没有用到
#5  x11(Xwindow)
#6  重新启动(千万不要把initdefault 设置为6)
各种shell
sh:Steve Bourne 
bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
csh:c shell , C 语言风格
tcsh
ksh :Korn Shell, AIX 默认 shell 
zsh: MacOS默认shell

总结:就是把你的命令解释给计算机然后完成指令

显示当前系统所有的shell

echo ${SHELL}
cat etc/shells

image-20240223155659355

查看主机名字

hostname


注意:主机名不支持下划线,支持横线

image-20240223155836619

修改主机名

hostnamectl
查询或更改系统主机名

补充说明
hostnamectl可用于查询和更改系统主机名和相关设置。

语法
hostnamectl [选项...] 指令 ...
指令
status                 显示当前主机名设置
set-hostname NAME      设置系统主机名
set-icon-name NAME     设置主机的图标名称
set-chassis NAME       设置主机的机箱类型 
set-deployment NAME    设置主机的部署环境 
set-location NAME      设置主机位置
选项
-h --help               显示此帮助
    --version           显示包的版本
    --no-ask-password   不提示输入密码
-H --host=[USER@]HOST   在远程主机上操作
-M --machine=CONTAINER  在本地容器上执行操作。指定要连接到的容器名称。
--transient, --static, --pretty  
                        如果调用了status(或者没有给出显式命令)并且指定了其中一个开关,hostnamectl将只打印出这个选定的主机名。
实例
显示主机名设置

$ hostnamectl status
改变主机名(永久修改,不用重启哦~)

$ sudo hostnamectl set-hostname newname

在rocky系统上安装邮件服务

yum -y install postfix

image-20240223160215366

安装完完成之后启用他

systemctl restart postfix

查看状态

systemctl status postfix

image-20240223160928002

这里可以看到,他已经启动了,在运行了

提示符

Prompt

#CentOS默认提示符

[root@localhost ~]#

#Ubuntu默认提示符

root@ubuntu1804:~#

# 管理员

$ 普通用户

格式


[root@localhost ~]# echo $PS1
[\u@\h \W]\$

root@ubuntu2204:~# echo j$PS1
j\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

修改提示符颜色

PS1="\[\e[1;5;41;30m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\
[\e[0m\]\\$"


想要文件生效,就必须写到文件里

centos/rocky
nano /etc/profile  或者nano etc/bashrc


ubuntu
nano .bashrc

贴到最后一行---ctrl+x---y---enter--重启生效

image-20240223182846999

执行命令的过程

内部命令--系统自带

外部命令--外部程序

如何查看内外部命令

type COMMAND


范例
[10:42:32 root@localhost ~][#type -a echo
echo is a shell builtin
echo is /usr/bin/echo

查看内部命令的全部

help

[10:42:44 root@localhost ~][#help
GNU bash, version 5.1.8(1)-release (x86_64-redhat-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 job_spec [&]                                         history [-c] [-d offset] [n] or history -anrw [fi>
 (( expression ))                                     if COMMANDS; then COMMANDS; [ elif COMMANDS; then>
 . filename [arguments]                               jobs [-lnprs] [jobspec ...] or jobs -x command [a>
 :                                                    kill [-s sigspec | -n signum | -sigspec] pid | jo>
 [ arg... ]                                           let arg [arg ...]
 [[ expression ]]                                     local [option] name[=value] ...
 alias [-p] [name[=value] ... ]                       logout [n]
 bg [job_spec ...]                                    mapfile [-d delim] [-n count] [-O origin] [-s cou>
 bind [-lpsvPSVX] [-m keymap] [-f filename] [-q nam>  popd [-n] [+N | -N]
 break [n]                                            printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                    pushd [-n] [+N | -N | dir]
 caller [expr]                                        pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]>  read [-ers] [-a array] [-d delim] [-i text] [-n n>
 cd [-L|[-P [-e]] [-@]] [dir]                         readarray [-d delim] [-n count] [-O origin] [-s c>
 command [-pVv] command [arg ...]                     readonly [-aAf] [name[=value] ...] or readonly -p
 compgen [-abcdefgjksuv] [-o option] [-A action] [->  return [n]
 complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] >  select NAME [in WORDS ... ;] do COMMANDS; done
 compopt [-o|+o option] [-DEI] [name ...]             set [-abefhkmnptuvxBCHP] [-o option-name] [--] [a>
 continue [n]                                         shift [n]
 coproc [NAME] command [redirections]                 shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]     source filename [arguments]
 dirs [-clpv] [+N] [-N]                               suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid ...]            test [expr]
 echo [-neE] [arg ...]                                time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [name ...]         times
 eval [arg ...]                                       trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [argument ...]] [red>  true
 exit [n]                                             type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or export -p         typeset [-aAfFgiIlnrtux] [-p] name[=value] ...
 false                                                ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [pat=>  umask [-p] [-S] [mode]
 fg [job_spec]                                        unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done         unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done        until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMANDS>  variables - Names and meanings of some shell vari>
 getopts optstring name [arg ...]                     wait [-fn] [-p var] [id ...]
 hash [-lr] [-p pathname] [-dt] [name ...]            while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                            { COMMANDS ; }



注意:help只能看内部命令的帮助

查看外部命令的全部-对应文件夹

[10:46:31 root@localhost ~][#echo $PATH

/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
#全都是外部命令的文件夹




如何查看外部命令的路径
语法:
which -a |--skip-alias
whereis



范例:

[10:49:48 root@localhost ~][#which hostname
/usr/bin/hostname
[10:51:55 root@localhost ~][#which install
/usr/bin/install





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 清除缓存



范例:

[10:36:43 root@ubuntu2004 ~][#hash
hits	command
   1	/usr/bin/mesg
   1	/usr/bin/nano


[root@ubuntu2204 ~]#hash
hits	command
   1	/usr/bin/mesg
   2	/usr/bin/nano


[10:52:06 root@localhost ~][#hash
hits	command
   2	/usr/bin/nano



别名

alias

别名也可以理解为小名

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

语法:
alias NAME='VALUE'



查看系统的别名

[10:46:51 root@localhost ~][#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 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'


范例:


取消别名

unalias

unalias [-a] name [name……]
unalias -a   #取消所有别名

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

\ALIASNAME
“ALIASNAME”
‘ALIASNAME’ 
command ALIASNAME
/path/commmand   #只适用于外部命令





范例:
[10:59:26 root@localhost ~][#ls /
afs  boot  etc   lib    media  opt   root  sbin  sys  usr
bin  dev   home  lib64  mnt    proc  run   srv   tmp  var
[10:59:29 root@localhost ~][#\ls /
afs  boot  etc	 lib	media  opt   root  sbin  sys  usr
bin  dev   home  lib64	mnt    proc  run   srv	 tmp  var

如下图

image-20240223190017260

如何想让别名永久生效可以这样做

如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

source /path/to/config_file
. /path/to/config_file


范例
[11:02:18 root@localhost ~][#vi .bashrc

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
    PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'


# 如果你想要定义别名,直接在这后面加就可以

image-20240223190238982

image-20240223190824331

image-20240223190854330

注意:

这个里面涉及到vi编辑器的操作

i  插入模式  # 就是你可以直接编辑了
esc 正常模式  # 就是你只能看,不能编辑
此时在这个正常模式下输入:wq   # 保存并退出了
还有一个关键点  想让文件生效,要么重启或者直接让他生效
.  .bashrc  或者   source .bashrc   # 这一步操作就是让文件生效

ls
显示目录内容列表

选项
-C     # 多列输出,纵向排序。
-F     # 每个目录名加 "/" 后缀,每个 FIFO 名加 "|" 后缀, 每个可运行名加“ * ”后缀。
-R     # 递归列出遇到的子目录。
-a     # 列出所有文件,包括以 "." 开头的隐含文件。
-c     # 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-d     # 将目录名像其它文件一样列出,而不是列出它们的内容。
-i     # 输出文件前先输出文件系列号(即 i 节点号: i-node number)。 -l  列出(以单列格式)文件模式
       # (file mode),文件的链接数,所有者名,组名,文件大小(以字节为单位),时间信息,及文件名。
       # 缺省时,时间信息显示最近修改时间;可以以选项“-c”和“-u”选择显示其它两种时间信息。对于设备文件,
       # 原先显示文件大小的区域通常显示的是主要和次要的信号(majorand minor device numbers)。
-q     # 将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
-r     # 逆序排列。
-t     # 按时间信息排序。
-u     # 使用最近访问时间代替最近修改时间为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-1     # 单列输出。
-1, --format=single-column  # 一行输出一个文件(单列输出)。如标准输出不是到终端,此选项就是缺省选项。
-a, --all # 列出目录中所有文件,包括以“.”开头的文件。
-b, --escape # 把文件名中不可输出的字符用反斜杠加字符编号(就像在 C 语言里一样)的形式列出。
-c, --time=ctime, --time=status
      # 按文件状态改变时间(i节点中的ctime)排序并输出目录内
      # 容。如采用长格式输出(选项“-l”),使用文件的状态改
      # 变时间取代文件修改时间。【译注:所谓文件状态改变(i节
      # 点中以ctime标志),既包括文件被修改,又包括文件属性( 如所有者、组、链接数等等)的变化】
-d, --directory
      # 将目录名像其它文件一样列出,而不是列出它们的内容。
-f    # 不排序目录内容;按它们在磁盘上存储的顺序列出。同时启 动“ -a ”选项,如果在“ -f ”之前存在“ -l”、
      # “ - -color ”或“ -s ”,则禁止它们。
-g    # 忽略,为兼容UNIX用。
-i, --inode
      # 在每个文件左边打印  i  节点号(也叫文件序列号和索引号:  file  serial  number and index num‐
      # ber)。i节点号在每个特定的文件系统中是唯一的。
-k, --kilobytes
      # 如列出文件大小,则以千字节KB为单位。
-l, --format=long, --format=verbose
      # 输出的信息从左到右依次包括文件名、文件类型、权限、硬链接数、所有者名、组名、大小(byte)
      # 、及时间信息(如未指明是其它时间即指修改时间)。对于6个月以上的文件或超出未来
      # 1小时的文件,时间信息中的时分将被年代取代。
      # 每个目录列出前,有一行“总块数”显示目录下全部文件所占的磁盘空间。块默认是1024字节;
      # 如果设置了 POSIXLY_CORRECT 的环境变量,除非用“-k”选项,则默认块大小是 512 字节。
      # 每一个硬链接都计入总块数(因此可能重复计数),这无 疑是个缺点。

# 列出的权限类似于以符号表示(文件)模式的规范。但是 ls
      # 在每套权限的第三个字符中结合了多位( multiple bits ) 的信息,如下: s 如果设置了  setuid
      # 位或 setgid   位,而且也设置了相应的可执行位。 S 如果设置了 setuid 位或 setgid
      # 位,但是没有设置相应的可执行位。 t 如果设置了  sticky  位,而且也设置了相应的可执行位。  T
      # 如果设置了 sticky 位,但是没有设置相应的可执行位。              x
      # 如果仅仅设置了可执行位而非以上四种情况。 - 其它情况(即可执行位未设置)。
-m, --format=commas
      # 水平列出文件,每行尽可能多,相互用逗号和一个空格分隔。
-n, --numeric-uid-gid
      # 列出数字化的 UID 和 GID 而不是用户名和组名。
-o    #  以长格式列出目录内容,但是不显示组信息。等于使用“         --format=long          --no-group
      # ”选项。提供此选项是为了与其它版本的 ls 兼容。
-p    #  在每个文件名后附上一个字符以说明该文件的类型。类似“ -F ”选项但是不 标示可执行文件。
-q, --hide-control-chars
      # 用问号代替文件名中非打印的字符。这是缺省选项。
-r, --reverse
      # 逆序排列目录内容。
-s, --size
      # 在每个文件名左侧输出该文件的大小,以    1024   字节的块为单位。如果设置了   POSIXLY_CORRECT
      # 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
-t, --sort=time
      # 按文件最近修改时间( i 节点中的 mtime )而不是按文件名字典序排序,新文件 靠前。
-u, --time=atime, --time=access, --time=use
      # 类似选项“    -t    ”,但是用文件最近访问时间(    i     节点中的     atime     )取代文件修
      # 改时间。如果使用长格式列出,打印的时间是最近访问时间。
-w, --width cols
       # 假定屏幕宽度是      cols      (      cols     以实际数字取代)列。如未用此选项,缺省值是这
       # 样获得的:如可能先尝试取自终端驱动,否则尝试取自环境变量          COLUMNS          (如果设
       # 置了的话),都不行则取 80 。

-x, --format=across, --format=horizontal
       # 多列输出,横向排序。

-A, --almost-all
       # 显示除 "." 和 ".." 外的所有文件。

-B, --ignore-backups
       # 不输出以“ ~ ”结尾的备份文件,除非已经在命令行中给出。

-C, --format=vertical
       # 多列输出,纵向排序。当标准输出是终端时这是缺省项。使用命令名 dir 和 d 时, 则总是缺省的。

-D, --dired
       # 当采用长格式(“-l”选项)输出时,在主要输出后,额外打印一行:  //DIRED//  BEG1 END1 BEG2
       # END2 ...

# BEGn 和 ENDn 是无符号整数,记录每个文件名的起始、结束位置在输出中的位置(
#        字节偏移量)。这使得          Emacs          易于找到文件名,即使文件名包含空格或换行等非正
#        常字符也无需特异的搜索。
# 
# 如果目录是递归列出的(“ -R ”选项),每个子目录后列出类似一行:
       # //SUBDIRED//  BEG1 END1 ...  【译注:我测试了 TurboLinux4.0 和 RedHat6.1 ,发现它们都是在 “
       # //DIRED//     BEG1...     ”之后列出“     //SUBDIRED//     BEG1     ...      ”,也即只有一个
       # 而不是在每个子目录后都有。而且“ //SUBDIRED// BEG1 ... ”列出的是各个子目 录名的偏移。】

-F, --classify, --file-type
       # 在每个文件名后附上一个字符以说明该文件的类型。“  * ”表示普通的可执行文件; “ / ”表示目录;“
       # @ ”表示符号链接;“ | ”表示FIFOs;“ = ”表示套接字 (sockets) ;什么也没有则表示普通文件。

-G, --no-group
       # 以长格式列目录时不显示组信息。

-I, --ignorepattern
       # 除非在命令行中给定,不要列出匹配shell文件名匹配式(pattern ,不是指一般
       # 表达式)的文件。在shell中,文件名以"."起始的不与在文件名匹配式(pattern)
       # 开头的通配符匹配。

-L, --dereference
       # 列出符号链接指向的文件的信息,而不是符号链接本身。

-N, --literal
       # 不要用引号引起文件名。

-Q, --quote-name
       # 用双引号引起文件名,非打印字符以 C 语言的方法表示。

-R, --recursive
       # 递归列出全部目录的内容。

-S, --sort=size
       # 按文件大小而不是字典序排序目录内容,大文件靠前。

-T, --tabsize cols
       # 假定每个制表符宽度是 cols 。缺省为 8。为求效率, ls 可能在输出中使用制表符。  若 cols 为
       0,则不使用制表符。

-U, --sort=none
       # 不排序目录内容;按它们在磁盘上存储的顺序列出。(选项“-U”和“-f”的不
       # 同是前者不启动或禁止相关的选项。)这在列很大的目录时特别有用,因为不加排序
       # 能显著地加快速度。

-X, --sort=extension
       # 按文件扩展名(由最后的 "." 之后的字符组成)的字典序排序。没有扩展名的先列 出。

--color[=when]
       # 指定是否使用颜色区别文件类别。环境变量  LS_COLORS  指定使用的颜色。如何设置 这个变量见 dir‐
       # colors(1) 。 when 可以被省略,或是以下几项之一:
none # 不使用颜色,这是缺省项。
       # auto 仅当标准输出是终端时使用。 always 总是使用颜色。指定 --color 而且省略 when  时就等同于
       # --color=always 。

--full-time
       # 列出完整的时间,而不是使用标准的缩写。格式如同          date(1)          的缺省格式;此格式
       # 是不能改变的,但是你可以用 cut(1) 取出其中的日期字串并将结果送至命令 “ date -d ”。

# 输出的时间包括秒是非常有用的。( Unix 文件系统储存文件的时间信息精确到秒,
       # 因此这个选项已经给出了系统所知的全部信息。)例如,当你有一个         Makefile          文件
       # 不能恰当地生成文件时,这个选项会提供帮助。
       
       
       
       
       
       
       
       
  实例
$ ls       # 仅列出当前目录可见文件
$ ls -l    # 列出当前目录可见文件详细信息
$ ls -hl   # 列出详细信息并以可读大小显示文件大小
$ ls -al   # 列出所有文件(包括隐藏)的详细信息
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)
  
  
  
  
  
  
  
  
  
范例:
ls -l

root@ubuntu2204:~# ls -l
total 8
-rw-r--r-- 1 root root    2 Feb 23 10:53 bashrc
drwx------ 3 root root 4096 Feb 23  2024 snap

[11:13:53 root@localhost ~][#ls -l
total 8
-rw-------. 1 root root 1082 Feb 23 06:57 anaconda-ks.cfg
-rw-r--r--. 1 root root    1 Feb 23 11:02 bashrc




ps
报告当前系统的进程状态

语法
ps(选项)
选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。 
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"S"选项相同。
--deselect:此选项的效果和指定"-N"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-G"选项相同。
--Group<群组识别码>:此选项的效果和指定"-G"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-U"选项相同。
--User<用户识别码>:此选项的效果和指定"-U"选项相同。
--version:此选项的效果和指定"-V"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。


实例
ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3  # 按 CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -efL # 查看线程数
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列
ps -ef # 显示所有进程信息,连同命令行
ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程
ps -C nginx # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程
ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签
ps -e -o pid,comm,etime # 显示进程运行的时间
ps -aux | grep named # 查看named进程详细信息
ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称





范例

[11:13:56 root@localhost ~][#ps
    PID TTY          TIME CMD
   2181 pts/0    00:00:00 bash
   2296 pts/0    00:00:00 ps
[11:15:55 root@localhost ~][#ps -a
    PID TTY          TIME CMD
   1413 tty1     00:00:00 dbus-run-sessio
   1414 tty1     00:00:00 dbus-daemon
   1415 tty1     00:00:00 gnome-session-b
   1503 tty1     00:00:02 gnome-shell
   1662 tty1     00:00:00 at-spi-bus-laun
   1667 tty1     00:00:00 dbus-daemon
   1671 tty1     00:00:00 Xwayland
   1681 tty1     00:00:00 xdg-permission-
   1740 tty1     00:00:00 gjs
   1742 tty1     00:00:00 at-spi2-registr
   1750 tty1     00:00:00 gsd-sharing
   1751 tty1     00:00:00 gsd-wacom
   1755 tty1     00:00:00 gsd-color
   1757 tty1     00:00:00 gsd-keyboard
   1759 tty1     00:00:00 gsd-print-notif
   1760 tty1     00:00:00 gsd-rfkill
   1762 tty1     00:00:00 gsd-smartcard
   1764 tty1     00:00:00 gsd-datetime
   1766 tty1     00:00:00 gsd-media-keys
   1768 tty1     00:00:00 gsd-screensaver
   1775 tty1     00:00:00 gsd-sound
   1780 tty1     00:00:00 gsd-a11y-settin
   1781 tty1     00:00:00 gsd-housekeepin
   1782 tty1     00:00:00 gsd-power
   1879 tty1     00:00:00 gsd-printer
   1960 tty1     00:00:00 gjs
   1964 tty1     00:00:00 ibus-daemon
   1971 tty1     00:00:00 ibus-dconf
   1976 tty1     00:00:00 ibus-x11
   1983 tty1     00:00:00 ibus-portal
   1990 tty1     00:00:00 ibus-engine-sim
   2297 pts/0    00:00:00 ps
[11:16:00 root@localhost ~][#ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.9 106836 16456 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd rhgb --switched
root           2  0.0  0.0      0     0 ?        S    09:57   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   09:57   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   09:57   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   09:57   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   09:57   0:00 [netns]
root           8  0.0  0.0      0     0 ?        I<   09:57   0:00 [kworker/0:0H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   09:57   0:00 [mm_percpu_wq]
root          12  0.0  0.0      0     0 ?        I    09:57   0:00 [rcu_tasks_kthre]
root          13  0.0  0.0      0     0 ?        I    09:57   0:00 [rcu_tasks_rude_]
root          14  0.0  0.0      0     0 ?        I    09:57   0:00 [rcu_tasks_trace]
root          15  0.0  0.0      0     0 ?        S    09:57   0:00 [ksoftirqd/0]
root          16  0.0  0.0      0     0 ?        S    09:57   0:00 [pr/tty0]
root          17  0.0  0.0      0     0 ?        I    09:57   0:00 [rcu_preempt]
root          18  0.0  0.0      0     0 ?        S    09:57   0:00 [migration/0]
root          19  0.0  0.0      0     0 ?        S    09:57   0:00 [idle_inject/0]
root          21  0.0  0.0      0     0 ?        S    09:57   0:00 [cpuhp/0]
root          22  0.0  0.0      0     0 ?        S    09:57   0:00 [cpuhp/1]
root          23  0.0  0.0      0     0 ?        S    09:57   0:00 [idle_inject/1]
root          24  0.0  0.0      0     0 ?        S    09:57   0:00 [migration/1]
root          25  0.0  0.0      0     0 ?        S    09:57   0:00 [ksoftirqd/1]
root          27  0.0  0.0      0     0 ?        I<   09:57   0:00 [kworker/1:0H-events_highpri]
root          29  0.0  0.0      0     0 ?        S    09:57   0:00 [kdevtmpfs]
root          30  0.0  0.0      0     0 ?        I<   09:57   0:00 [inet_frag_wq]
root          31  0.0  0.0      0     0 ?        S    09:57   0:00 [kauditd]
root          33  0.0  0.0      0     0 ?        S    09:57   0:00 [khungtaskd]
root          35  0.0  0.0      0     0 ?        S    09:57   0:00 [oom_reaper]
root          36  0.0  0.0      0     0 ?        I<   09:57   0:00 [writeback]
root          37  0.0  0.0      0     0 ?        S    09:57   0:00 [kcompactd0]
root          38  0.0  0.0      0     0 ?        SN   09:57   0:00 [ksmd]
root          39  0.0  0.0      0     0 ?        SN   09:57   0:00 [khugepaged]
root          40  0.0  0.0      0     0 ?        I<   09:57   0:00 [cryptd]
root          41  0.0  0.0      0     0 ?        I<   09:57   0:00 [kintegrityd]
root          42  0.0  0.0      0     0 ?        I<   09:57   0:00 [kblockd]
root          43  0.0  0.0      0     0 ?        I<   09:57   0:00 [blkcg_punt_bio]
root          44  0.0  0.0      0     0 ?        I<   09:57   0:00 [tpm_dev_wq]
root          45  0.0  0.0      0     0 ?        I<   09:57   0:00 [md]
root          46  0.0  0.0      0     0 ?        I<   09:57   0:00 [edac-poller]
root          47  0.0  0.0      0     0 ?        S    09:57   0:00 [watchdogd]
root          49  0.0  0.0      0     0 ?        I<   09:57   0:00 [kworker/0:1H-kblockd]
root          50  0.0  0.0      0     0 ?        S    09:57   0:00 [kswapd0]
root          55  0.0  0.0      0     0 ?        I<   09:57   0:00 [kthrotld]
root          62  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/24-pciehp]
root          63  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/25-pciehp]
root          64  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/26-pciehp]
root          65  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/27-pciehp]
root          66  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/28-pciehp]
root          67  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/29-pciehp]
root          68  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/30-pciehp]
root          69  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/31-pciehp]
root          70  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/32-pciehp]
root          71  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/33-pciehp]
root          72  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/34-pciehp]
root          73  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/35-pciehp]
root          74  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/36-pciehp]
root          75  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/37-pciehp]
root          76  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/38-pciehp]
root          77  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/39-pciehp]
root          78  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/40-pciehp]
root          79  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/41-pciehp]
root          80  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/42-pciehp]
root          81  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/43-pciehp]
root          82  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/44-pciehp]
root          83  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/45-pciehp]
root          84  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/46-pciehp]
root          85  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/47-pciehp]
root          86  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/48-pciehp]
root          87  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/49-pciehp]
root          88  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/50-pciehp]
root          89  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/51-pciehp]
root          90  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/52-pciehp]
root          91  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/53-pciehp]
root          92  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/54-pciehp]
root          93  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/55-pciehp]
root          94  0.0  0.0      0     0 ?        I<   09:57   0:00 [acpi_thermal_pm]
root          95  0.0  0.0      0     0 ?        I<   09:57   0:00 [kmpath_rdacd]
root          96  0.0  0.0      0     0 ?        I<   09:57   0:00 [kaluad]
root          97  0.0  0.0      0     0 ?        I<   09:57   0:00 [mld]
root          98  0.0  0.0      0     0 ?        I<   09:57   0:00 [ipv6_addrconf]
root         108  0.0  0.0      0     0 ?        I<   09:57   0:00 [kstrp]
root         120  0.0  0.0      0     0 ?        I<   09:57   0:00 [zswap-shrink]
root         237  0.0  0.0      0     0 ?        I<   09:57   0:00 [kworker/u257:0]
root         291  0.0  0.0      0     0 ?        I    09:57   0:00 [kworker/1:2-cgroup_destroy]
root         293  0.0  0.0      0     0 ?        I<   09:57   0:00 [kworker/1:1H-xfs-log/dm-0]
root         434  0.0  0.0      0     0 ?        I<   09:57   0:00 [ata_sff]
root         435  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_0]
root         436  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_0]
root         437  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_1]
root         438  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_1]
root         445  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_2]
root         446  0.0  0.0      0     0 ?        I<   09:57   0:00 [nvme-wq]
root         448  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_2]
root         450  0.0  0.0      0     0 ?        I<   09:57   0:00 [nvme-reset-wq]
root         451  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_3]
root         452  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_3]
root         453  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_4]
root         455  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_4]
root         457  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_5]
root         458  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_5]
root         461  0.0  0.0      0     0 ?        I<   09:57   0:00 [nvme-delete-wq]
root         462  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_6]
root         464  0.0  0.0      0     0 ?        I<   09:57   0:00 [nvme-auth-wq]
root         465  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_6]
root         467  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_7]
root         468  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_7]
root         471  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_8]
root         472  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_8]
root         473  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_9]
root         474  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_9]
root         475  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_10]
root         476  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_10]
root         477  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_11]
root         478  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_11]
root         479  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_12]
root         480  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_12]
root         481  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_13]
root         482  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_13]
root         483  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_14]
root         485  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_14]
root         486  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_15]
root         487  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_15]
root         488  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_16]
root         489  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_16]
root         490  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_17]
root         491  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_17]
root         492  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_18]
root         493  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_18]
root         494  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_19]
root         495  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_19]
root         496  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_20]
root         497  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_20]
root         499  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_21]
root         500  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_21]
root         501  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_22]
root         502  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_22]
root         503  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_23]
root         504  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_23]
root         505  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_24]
root         506  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_24]
root         507  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_25]
root         508  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_25]
root         509  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_26]
root         510  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_26]
root         511  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_27]
root         512  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_27]
root         513  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_28]
root         514  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_28]
root         515  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_29]
root         516  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_29]
root         517  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_30]
root         518  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_30]
root         519  0.0  0.0      0     0 ?        S    09:57   0:00 [scsi_eh_31]
root         520  0.0  0.0      0     0 ?        I<   09:57   0:00 [scsi_tmf_31]
root         543  0.0  0.0      0     0 ?        I    09:57   0:00 [kworker/u256:27-flush-253:0]
root         547  0.0  0.0      0     0 ?        I    09:57   0:00 [kworker/u256:30-events_unbound]
root         552  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/16-vmwgfx]
root         553  0.0  0.0      0     0 ?        I<   09:57   0:00 [ttm]
root         626  0.0  0.0      0     0 ?        I<   09:57   0:00 [kdmflush/253:0]
root         633  0.0  0.0      0     0 ?        I<   09:57   0:00 [kdmflush/253:1]
root         651  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfsalloc]
root         652  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs_mru_cache]
root         653  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-buf/dm-0]
root         654  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-conv/dm-0]
root         655  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-reclaim/dm-]
root         656  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-blockgc/dm-]
root         657  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-inodegc/dm-]
root         658  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-log/dm-0]
root         659  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-cil/dm-0]
root         660  0.0  0.0      0     0 ?        S    09:57   0:00 [xfsaild/dm-0]
root         730  0.0  0.5  35420 10460 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd-journald
root         746  0.0  0.1  85104  2312 ?        Ssl  09:57   0:00 vmware-vmblock-fuse /run/vmblock-fuse -o
root         749  0.0  0.7  35984 13236 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd-udevd
root         787  0.0  0.0      0     0 ?        I<   09:57   0:00 [kdmflush/253:2]
root         789  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/76-vmw_vmci]
root         790  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/77-vmw_vmci]
root         791  0.0  0.0      0     0 ?        S    09:57   0:00 [irq/78-vmw_vmci]
root         824  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-buf/nvme0n1]
root         825  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-conv/nvme0n]
root         826  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-reclaim/nvm]
root         827  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-blockgc/nvm]
root         828  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-inodegc/nvm]
root         829  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-buf/dm-2]
root         830  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-conv/dm-2]
root         831  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-reclaim/dm-]
root         832  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-blockgc/dm-]
root         833  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-inodegc/dm-]
root         834  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-log/nvme0n1]
root         835  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-cil/nvme0n1]
root         836  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-log/dm-2]
root         837  0.0  0.0      0     0 ?        I<   09:57   0:00 [xfs-cil/dm-2]
root         838  0.0  0.0      0     0 ?        S    09:57   0:00 [xfsaild/nvme0n1]
root         839  0.0  0.0      0     0 ?        S    09:57   0:00 [xfsaild/dm-2]
root         845  0.0  0.2  91824  4464 ?        S<sl 09:57   0:00 /sbin/auditd
root         847  0.0  0.1   7780  3264 ?        S<   09:57   0:00 /usr/sbin/sedispatch
dbus         868  0.0  0.2  10948  4704 ?        Ss   09:57   0:00 /usr/bin/dbus-broker-launch --scope syst
dbus         869  0.0  0.2   9044  4516 ?        S    09:57   0:00 dbus-broker --log 4 --controller 9 --mac
avahi        870  0.0  0.3  15532  6212 ?        Ss   09:57   0:00 avahi-daemon: running [linux.local]
root         873  0.0  0.1  79268  2940 ?        Ssl  09:57   0:00 /usr/sbin/irqbalance --foreground
libstor+     874  0.0  0.0   2704   972 ?        Ss   09:57   0:00 /usr/bin/lsmd -d
root         875  0.0  0.1   2804  1832 ?        Ss   09:57   0:00 /usr/sbin/mcelog --daemon --foreground
polkitd      876  0.0  1.6 2578164 29596 ?       Ssl  09:57   0:00 /usr/lib/polkit-1/polkitd --no-debug
root         877  0.0  0.4 452116  8832 ?        Ssl  09:57   0:00 /usr/libexec/power-profiles-daemon
rtkit        878  0.0  0.0 154108  1580 ?        SNsl 09:57   0:00 /usr/libexec/rtkit-daemon
root         879  0.0  0.6 525672 11408 ?        Ssl  09:57   0:00 /usr/libexec/accounts-daemon
root         882  0.0  0.4 448280  8636 ?        Ssl  09:57   0:00 /usr/libexec/switcheroo-control
root         885  0.0  0.6  20432 11212 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd-logind
root         887  0.0  0.7 395064 13500 ?        Ssl  09:57   0:00 /usr/libexec/udisks2/udisksd
chrony       892  0.0  0.1  84380  3436 ?        S    09:57   0:00 /usr/sbin/chronyd -F 2
root         894  0.0  0.4 448892  8756 ?        Ssl  09:57   0:00 /usr/libexec/upowerd
root         898  0.0  0.5 232512  9908 ?        Ss   09:57   0:00 /usr/bin/VGAuthService -s
root         899  0.1  0.7 456388 13164 ?        Ssl  09:57   0:05 /usr/bin/vmtoolsd
avahi        906  0.0  0.0  15264   860 ?        S    09:57   0:00 avahi-daemon: chroot helper
root         909  0.0  0.0   4712  1696 ?        SNs  09:57   0:00 /usr/sbin/alsactl -s -n 19 -c -E ALSA_CO
root         922  0.0  0.6 391452 12284 ?        Ssl  09:57   0:00 /usr/sbin/ModemManager
root         923  0.0  2.4 351400 43360 ?        Ssl  09:57   0:00 /usr/bin/python3 -s /usr/sbin/firewalld 
root        1065  0.0  1.2 474780 22932 ?        Ssl  09:57   0:00 /usr/sbin/NetworkManager --no-daemon
root        1090  0.0  0.5 247356 10500 ?        Ss   09:57   0:00 /usr/sbin/cupsd -l
root        1091  0.0  0.5  15792  9084 ?        Ss   09:57   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 
root        1163  0.0  0.3 161584  6336 ?        Ssl  09:57   0:00 /usr/sbin/rsyslogd -n
root        1169  0.0  0.0   4668  1524 ?        Ss   09:57   0:00 /usr/sbin/atd -f
root        1172  0.0  0.1 223912  3496 ?        Ss   09:57   0:00 /usr/sbin/crond -n
root        1173  0.0  0.7 453236 13032 ?        Ssl  09:57   0:00 /usr/sbin/gdm
root        1208  0.0  0.7 386960 13288 ?        Sl   09:57   0:00 gdm-session-worker [pam/gdm-launch-envir
gdm         1243  0.0  0.7  22568 13976 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd --user
gdm         1260  0.0  0.3  26292  5784 ?        S    09:57   0:00 (sd-pam)
gdm         1391  0.0  0.4 374304  7972 tty1     Ssl+ 09:57   0:00 /usr/libexec/gdm-wayland-session --regis
gdm         1393  0.0  0.2  10528  4092 ?        Ss   09:57   0:00 /usr/bin/dbus-broker-launch --scope user
gdm         1411  0.0  0.0   4864  1380 ?        S    09:57   0:00 dbus-broker --log 4 --controller 9 --mac
gdm         1413  0.0  0.0   6596  1572 tty1     S+   09:57   0:00 dbus-run-session -- gnome-session --auto
gdm         1414  0.0  0.4  15796  7348 tty1     S+   09:57   0:00 dbus-daemon --nofork --print-address 4 -
gdm         1415  0.0  1.2 734880 22560 tty1     Sl+  09:57   0:00 /usr/libexec/gnome-session-binary --auto
gdm         1503  0.0 10.7 3741720 190900 tty1   Sl+  09:57   0:02 /usr/bin/gnome-shell
gdm         1662  0.0  0.4 308536  7664 tty1     Sl+  09:57   0:00 /usr/libexec/at-spi-bus-launcher
gdm         1667  0.0  0.3  15348  6880 tty1     S+   09:57   0:00 /usr/bin/dbus-daemon --config-file=/usr/
gdm         1671  0.0  3.8 191824 69084 tty1     S+   09:57   0:00 /usr/bin/Xwayland :1024 -rootless -nores
gdm         1681  0.0  0.4 448240  7128 tty1     Sl+  09:57   0:00 /usr/libexec/xdg-permission-store
gdm         1695  0.0  0.6 259580 11792 ?        S<sl 09:57   0:00 /usr/bin/pipewire
gdm         1696  0.0  1.0 472960 18556 ?        S<sl 09:57   0:00 /usr/bin/wireplumber
gdm         1697  0.0  0.5 242596  9312 ?        S<sl 09:57   0:00 /usr/bin/pipewire-pulse
root        1712  0.0  0.3  15264  5708 ?        Ss   09:57   0:00 /usr/sbin/wpa_supplicant -c /etc/wpa_sup
root        1721  0.0  1.6 481120 28420 ?        Ssl  09:57   0:00 /usr/libexec/packagekitd
gdm         1740  0.0  1.5 2731056 28352 tty1    Sl+  09:57   0:00 /usr/bin/gjs /usr/share/gnome-shell/org.
gdm         1742  0.0  0.4 161700  7188 tty1     Sl+  09:57   0:00 /usr/libexec/at-spi2-registryd --use-gno
gdm         1750  0.0  0.8 677956 14684 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-sharing
gdm         1751  0.0  1.5 591196 27756 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-wacom
gdm         1755  0.0  1.6 740228 28788 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-color
gdm         1757  0.0  1.5 590560 27200 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-keyboard
gdm         1759  0.0  0.8 467032 15036 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-print-notifications
gdm         1760  0.0  0.4 669844  8312 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-rfkill
gdm         1762  0.0  0.7 603136 13564 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-smartcard
gdm         1764  0.0  1.1 594564 20792 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-datetime
gdm         1766  0.0  1.7 735520 30416 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-media-keys
gdm         1768  0.0  0.4 448244  8152 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-screensaver-proxy
gdm         1775  0.0  0.7 530876 13188 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-sound
gdm         1780  0.0  0.4 522340  8532 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-a11y-settings
gdm         1781  0.0  0.5 524904  9784 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-housekeeping
gdm         1782  0.0  1.7 665860 30800 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-power
gdm         1879  0.0  1.2 598136 21696 tty1     Sl+  09:57   0:00 /usr/libexec/gsd-printer
colord      1941  0.0  0.7 530556 13592 ?        Ssl  09:57   0:00 /usr/libexec/colord
gdm         1960  0.0  1.4 2796592 26352 tty1    Sl+  09:57   0:00 /usr/bin/gjs /usr/share/gnome-shell/org.
gdm         1964  0.0  0.7 526744 13528 tty1     Sl   09:57   0:00 ibus-daemon --panel disable -r --xim
gdm         1971  0.0  0.5 449220  9032 tty1     Sl   09:57   0:00 /usr/libexec/ibus-dconf
gdm         1976  0.0  3.3 593804 59644 tty1     Sl   09:57   0:00 /usr/libexec/ibus-x11 --kill-daemon
gdm         1983  0.0  0.6 449148 11256 tty1     Sl+  09:57   0:00 /usr/libexec/ibus-portal
gdm         1990  0.0  0.5 375364  9084 tty1     Sl   09:57   0:00 /usr/libexec/ibus-engine-simple
root        2018  0.0  0.7  22388 13804 ?        Ss   09:57   0:00 /usr/lib/systemd/systemd --user
root        2022  0.0  0.3  26484  5892 ?        S    09:57   0:00 (sd-pam)
root        2134  0.0  0.0      0     0 ?        I    10:17   0:00 [kworker/u256:0-events_unbound]
root        2151  0.0  0.0      0     0 ?        I    10:27   0:00 [kworker/1:1-events_freezable]
root        2164  0.0  0.6  19104 11580 ?        Ss   10:28   0:00 sshd: root [priv]
root        2169  0.0  0.4  18956  7136 ?        R    10:28   0:00 sshd: root@pts/0
root        2181  0.0  0.3 224096  5600 pts/0    Ss   10:28   0:00 -bash
root        2259  0.0  0.0      0     0 ?        I    10:59   0:00 [kworker/0:1-cgroup_destroy]
root        2277  0.0  0.0      0     0 ?        I    11:05   0:00 [kworker/0:2-events]
root        2292  0.0  0.0      0     0 ?        I    11:12   0:00 [kworker/0:0-events_power_efficient]
root        2293  0.0  0.0      0     0 ?        I    11:13   0:00 [kworker/1:0-events_freezable]
root        2298  0.0  0.1 225480  3532 pts/0    R+   11:16   0:00 ps aux

id
打印真实以及有效的用户和所在组的信息

概要
id [OPTION]... [USER]...
主要用途
没有选项时,打印指定用户ID信息。
选项
-a               兼容性选项,没有实际作用。
-Z, --context    只打印进程的安全上下文。
-g, --group      只打印有效的组ID。
-G, --groups     打印全部组ID。
-u, --user       只打印有效的用户ID。
-z, --zero       使用空字符代替默认的空格来分隔条目。
--help           显示帮助信息并退出。
--version        显示版本信息并退出。
只有在使用 -u -g -G 选项中一到多个时,以下选项可以使用:

-n, --name    打印名称而不是数字。
-r, --real    打印真实ID而不是有效ID。
参数
user(可选):可以为一到多个,默认为当前用户。

返回值
返回0表示成功,返回非0值表示失败。

例子
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:

root组GID号是:0
bin组GID号是:1
daemon组GID号是:2
sys组GID号是:3
adm组GID号是:4
disk组GID号是:6
wheel组GID号是:10
打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:

[root@localhost ~]# id -a
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
输出所有不同的组ID ,有效的,真实的和补充的,我们可以使用 -G 选项来实现:

[root@localhost ~]# id -G
0 1 2 3 4 6 10
结果只会显示GID号。你可以和/etc/group文件比较。下面是/etc/group文件的示例内容:

只输出有效的组ID,通过使用 -g 选项来只输出有效组ID:

[root@localhost ~]# id -g
0
输出特定用户信息,我们可以输出特定的用户信息相关的UID和GID。只需要在id命令后跟上用户名:

[root@localhost ~]# id www
uid=500(www) gid=500(www) groups=500(www)
注意
该命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID;一些程序可能需要UID/GID来运行。id 使我们更加容易地找出用户的UID以及GID,而不必在 /etc/group 文件中搜寻。

该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 id,info coreutils 'id invocation'。


想要知道一个命令是做什么的?不好意思问别人怎么办?

whatis
查询一个命令执行什么功能

补充说明
whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。

whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。

语法
whatis
实例
[root@localhost ~]# whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

[root@localhost ~]# whatis cp
cp                   (1)  - copy files and directories
cp                   (1p)  - copy files

[root@localhost ~]# whatis chown
chown                (1)  - change file owner and group
chown                (1p)  - change the file ownership
chown                (2)  - change ownership of a file
chown                (3p)  - change owner and group of a file

[root@localhost ~]# whatis man
man                  (1)  - format and display the on-line manual pages
man                  (1p)  - display system documentation
man                  (7)  - macros to format man pages
man                 (rpm) - A set of documentation tools: man, apropos and whatis.
man-pages           (rpm) - Man (manual) pages from the Linux Documentation Project.
man.config [man]     (5)  - configuration data for man


[11:22:57 root@localhost ~][#whatis rm
rm (1)               - remove files or directories
rm (1p)              - remove directory entries

将交互式的操作变成非交互操作(自动化执行),可以提高执行效率

可以吧多个命令写在一行


范例
[11:23:03 root@localhost ~][#hostname ;who ;history
localhost.localdomain
root     pts/0        2024-02-23 10:28 (10.0.0.1)
    1  init 3
    2  init 6
    3  hostname
    4  hostname -I
    5  yum -y install postfix
    6  systemctl re start postfix
    7  systemctl restart postfix
    8  systemctl status postfix
    9  lscpu
   10  echo $PS1
   11  nano /etc/profile
   12  exit
   13  nano /etc/profile
   14  nano /etc/bashrc
   15  type -a
   16  type -a echo
   17  help
   18  echo @PATH
   19  echo $PATH
   20  alias
   21  which hostname
   22  which install
   23  hash
   24  ls
   25  \ls
   26  ls
   27  ls /
   28  \ls /
   29  vi bashrc
   30  vi .bashrc
   31  test
   32  . .bashrc
   33  test
   34  vi .bashrc
   35  ls
   36  ls -l
   37  ps
   38  ps -a
   39  ps aux
   40  whatis
   41  whatis install
   42  whatis rm
   43  hostname ;who ;history

设置执行命令的时间

mesg n 2> /dev/null || true
HISTTIMEFORMAT='%F %T'

image-20240223193529181

image-20240223193545685

外部命令的****--help -h 选项

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

[root@centos8 ~]#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.
[root@centos8 ~]#cal -h
Usage:
 cal [options] [[[day] month] year]
 cal [options] <timestamp|monthname>
[root@centos8 ~]#strace --help
strace: invalid option -- '-'
Try 'strace -h' for more information.
[root@centos8 ~]#openssl --help
Invalid command '--help'; type "help" for a list.
[root@centos8 ~]#date -h
date: invalid option -- 'h'
Try 'date --help' for more information.
[root@centos8 ~]#shutdown -h
Shutdown scheduled for Fri 2020-03-20 08:26:27 CST, use 'shutdown -c' to cancel.

man

就是手册的意思

查看Linux中的指令帮助

补充说明
man命令 是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。

语法
man(选项)(参数)
选项
-a:在所有的man帮助手册中搜索;
-f:等价于whatis指令,显示给定关键字的简短描述信息;
-P:指定内容时使用分页程序;
-M:指定man手册搜索的路径。
参数
数字:指定从哪本man手册中搜索帮助;
关键字:指定要搜索帮助的关键字。
数字代表内容
1:用户在shell环境可操作的命令或执行文件;
2:系统内核可调用的函数与工具等
3:一些常用的函数(function)与函数库(library),大部分为C的函数库(libc)
4:设备文件说明,通常在/dev下的文件
5:配置文件或某些文件格式
6:游戏(games)
7:惯例与协议等,如Linux文件系统,网络协议,ASCII code等说明
8:系统管理员可用的管理命令
9:跟kernel有关的文件
实例
我们输入man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输man ifconfig它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号] 手册名称”。

man是按照手册的章节号的顺序进行搜索的,比如:

man sleep
只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:

man 3 sleep
[11:43:47 root@localhost ~][#man 3 sleep





































sleep(3)                                Library Functions Manual                                sleep(3)

NAME
       sleep - sleep for a specified number of seconds

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <unistd.h>

       unsigned int sleep(unsigned int seconds);

DESCRIPTION
       sleep() causes the calling thread to sleep either until the number of real-time seconds specified
       in seconds have elapsed or until a signal arrives which is not ignored.

RETURN VALUE
       Zero if the requested time has elapsed, or the number of seconds left to sleep, if the  call  was
       interrupted by a signal handler.

ATTRIBUTES
       For an explanation of the terms used in this section, see attributes(7).

       ┌──────────────────────────────────────────────────┬───────────────┬─────────────────────────────┐
       │Interface                                         │ Attribute     │ Value                       │
       ├──────────────────────────────────────────────────┼───────────────┼─────────────────────────────┤
       │sleep()                                           │ Thread safety │ MT-Unsafe sig:SIGCHLD/linux │
       └──────────────────────────────────────────────────┴───────────────┴─────────────────────────────┘

VERSIONS
       On  Linux,  sleep() is implemented via nanosleep(2).  See the nanosleep(2) man page for a discus?
       sion of the clock used.

       On some systems, sleep() may be implemented using alarm(2) and SIGALRM  (POSIX.1  permits  this);
       mixing calls to alarm(2) and sleep() is a bad idea.

STANDARDS
       POSIX.1-2008.

HISTORY
       POSIX.1-2001.

CAVEATS
       Using  longjmp(3)  from a signal handler or modifying the handling of SIGALRM while sleeping will
       cause undefined results.

SEE ALSO
       sleep(1), alarm(2), nanosleep(2), signal(2), signal(7)

Linux man-pages 6.04                           2023-03-30                                       sleep(3)





命令自身提供的官方使用指南

/usr/share/doc

date的玩法

11:32:04 root@localhost ~][#date Fri 23 Feb 11:39:38 GMT 2024 [11:39:38 root@localhost ~][#date +%F
2024-02-23
[11:39:47 root@localhost ~][#date +%T 11:39:52 [11:39:52 root@localhost ~][#date +%F +%T
date: extra operand ‘+%T’
Try 'date --help' for more information.
[11:40:00 root@localhost ~][#date +'%F %T'
2024-02-23 11:40:26

[11:40:26 root@localhost ~][#date -d 'yesterday'
Thu 22 Feb 11:42:18 GMT 2024
[11:42:18 root@localhost ~][#date -d 'yesterday' +'%F %T'
2024-02-22 11:43:16

[11:43:16 root@localhost ~][#date -d '-2 day' +'%F %T'
2024-02-21 11:43:47
#其中-2就是昨天  所以它显示的是昨天 

lscpu
显示有关CPU架构的信息

补充说明
lscpu命令 是显示有关CPU架构的信息。

语法
lscpu [选项]
选项
 -a, --all               # 打印在线和离线CPU(默认为-e)
 -b, --online            # 仅打印在线CPU(-p的默认值)
 -c, --offline           # 打印离线CPU
 -e, --extended[=<list>] # 打印出一个扩展的可读格式
 -p, --parse[=<list>]    # 打印出可解析的格式
 -s, --sysroot <dir>     # 将指定的目录用作系统根目录
 -x, --hex               # 打印十六进制掩码,而不是CPU列表

 -h, --help     # 显示此帮助并退出
 -V, --version  # 输出版本信息并退出
参数
可用列:
           CPU  逻辑CPU编号
          CORE  逻辑核心号码
        SOCKET  逻辑套接字号
          NODE  逻辑NUMA节点号
          BOOK  逻辑书号
         CACHE  显示了如何在CPU之间共享高速缓存
  POLARIZATION  虚拟硬件上的CPU调度模式
       ADDRESS  CPU的物理地址
    CONFIGURED  显示管理程序是否分配了CPU
        ONLINE  显示Linux是否正在使用CPU
例子
[root@localhost ~]# 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:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 30
Model name:            Intel(R) Xeon(R) CPU           X3430  @ 2.40GHz
Stepping:              5
CPU MHz:               2394.055
BogoMIPS:              4788.11
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0-3


范例:
[11:53:34 root@localhost ~][#lscpu
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         45 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  2
  On-line CPU(s) list:   0,1
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        GenuineIntel
  Model name:            12th Gen Intel(R) Core(TM) i5-12400F
    BIOS Model name:     12th Gen Intel(R) Core(TM) i5-12400F
    CPU family:          6
    Model:               151
    Thread(s) per core:  1
    Core(s) per socket:  1
    Socket(s):           2
    Stepping:            2
    BogoMIPS:            4992.00
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mm
                         x fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good
                          nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 
                         fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c r
                         drand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgs
                         base tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb s
                         ha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni arat umip pku ospke gfni vaes vpclmu
                         lqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities
Virtualization features: 
  Hypervisor vendor:     VMware
  Virtualization type:   full
Caches (sum of all):     
  L1d:                   96 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    2.5 MiB (2 instances)
  L3:                    36 MiB (2 instances)
NUMA:                    
  NUMA node(s):          1
  NUMA node0 CPU(s):     0,1
Vulnerabilities:         
  Gather data sampling:  Not affected
  Itlb multihit:         KVM: Mitigation: VMX unsupported
  L1tf:                  Not affected
  Mds:                   Not affected
  Meltdown:              Not affected
  Mmio stale data:       Not affected
  Retbleed:              Not affected
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Enhanced / Automatic IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS 
                         SW sequence
  Srbds:                 Not affected
  Tsx async abort:       Not affected





还有一个查看cpu的信息的方法
cat /proc/cpuinfo

[11:56:56 root@localhost ~][#cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 151
model name	: 12th Gen Intel(R) Core(TM) i5-12400F
stepping	: 2
microcode	: 0x25
cpu MHz		: 2496.001
cache size	: 18432 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
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 pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni arat umip pku ospke gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities
bugs		: spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit eibrs_pbrsb
bogomips	: 4992.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 151
model name	: 12th Gen Intel(R) Core(TM) i5-12400F
stepping	: 2
microcode	: 0x25
cpu MHz		: 2496.001
cache size	: 18432 KB
physical id	: 2
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
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 pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni arat umip pku ospke gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities
bugs		: spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit eibrs_pbrsb
bogomips	: 4992.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

lsblk
列出块设备信息

补充说明
lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。

选项
-a, --all            # 显示所有设备。
-b, --bytes          # 以bytes方式显示设备大小。
-d, --nodeps         # 不显示 slaves 或 holders。
-D, --discard        # print discard capabilities。
-e, --exclude <list> # 排除设备 (default: RAM disks)。
-f, --fs             # 显示文件系统信息。
-h, --help           # 显示帮助信息。
-i, --ascii          # use ascii characters only。
-m, --perms          # 显示权限信息。
-l, --list           # 使用列表格式显示。
-n, --noheadings     # 不显示标题。
-o, --output <list>  # 输出列。
-P, --pairs          # 使用key="value"格式显示。
-r, --raw            # 使用原始格式显示。
-t, --topology       # 显示拓扑结构信息。
实例
lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:

lsblk

NAME   MAJ:MIN rm   SIZE RO type mountpoint
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0  46.6G  0 part /
├─sda2   8:2    0     1K  0 part 
├─sda5   8:5    0   190M  0 part /boot
├─sda6   8:6    0   3.7G  0 part [SWAP]
├─sda7   8:7    0  93.1G  0 part /data
└─sda8   8:8    0  89.2G  0 part /personal
sr0     11:0    1  1024M  0 rom
7个栏目名称如下:

NAME :这是块设备名。
MAJ:MIN :本栏显示主要和次要设备号。
RM :本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE :本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
MOUNTPOINT :本栏指出设备挂载的挂载点。
默认选项不会列出所有空设备。要查看这些空设备,请使用以下命令:

lsblk -a
lsblk命令也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式。可以通过以下命令来获取这些信息:
范例
root@ubuntu2204:~# lsblk -a
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0 40.4M  1 loop /snap/snapd/20671
loop1                       7:1    0 63.9M  1 loop /snap/core20/2182
loop2                       7:2    0 63.9M  1 loop /snap/core20/2105
loop3                       7:3    0   87M  1 loop /snap/lxd/27037
loop4                       7:4    0    0B  0 loop 
loop5                       7:5    0    0B  0 loop 
loop6                       7:6    0    0B  0 loop 
loop7                       7:7    0    0B  0 loop 
sda                         8:0    0  200G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0  198G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   99G  0 lvm  /
sr0                        11:0    1    2G  0 rom  


lsblk -m
该命令也可以只获取指定设备的信息。这可以通过在提供给lsblk命令的选项后指定设备名来实现。例如,你可能对了解以字节显示你的磁盘驱动器大小比较感兴趣,那么你可以通过运行以下命令来实现:
范例
root@ubuntu2204:~# lsblk -a
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0 40.4M  1 loop /snap/snapd/20671
loop1                       7:1    0 63.9M  1 loop /snap/core20/2182
loop2                       7:2    0 63.9M  1 loop /snap/core20/2105
loop3                       7:3    0   87M  1 loop /snap/lxd/27037
loop4                       7:4    0    0B  0 loop 
loop5                       7:5    0    0B  0 loop 
loop6                       7:6    0    0B  0 loop 
loop7                       7:7    0    0B  0 loop 
sda                         8:0    0  200G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0  198G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   99G  0 lvm  /
sr0                        11:0    1    2G  0 rom  
root@ubuntu2204:~# lsblk -m
NAME                       SIZE OWNER GROUP MODE
loop0                     40.4M root  disk  brw-rw----
loop1                     63.9M root  disk  brw-rw----
loop2                     63.9M root  disk  brw-rw----
loop3                       87M root  disk  brw-rw----
sda                        200G root  disk  brw-rw----
├─sda1                       1M root  disk  brw-rw----
├─sda2                       2G root  disk  brw-rw----
└─sda3                     198G root  disk  brw-rw----
  └─ubuntu--vg-ubuntu--lv   99G root  disk  brw-rw----
sr0                          2G root  cdrom brw-rw----

lsblk -b /dev/sda

等价于

lsblk --bytes /dev/sda
你也可以组合几个选项来获取指定的输出。例如,你也许想要以列表格式列出设备,而不是默认的树状格式。你可能也对移除不同栏目名称的标题感兴趣。可以将两个不同的选项组合,以获得期望的输出,命令如下:
范例
root@ubuntu2204:~# lsblk -b /dev/sda
NAME                      MAJ:MIN RM         SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0 214748364800  0 disk 
├─sda1                      8:1    0      1048576  0 part 
├─sda2                      8:2    0   2147483648  0 part /boot
└─sda3                      8:3    0 212597735424  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0 106296246272  0 lvm  /

lsblk -nl
要获取SCSI设备的列表,你只能使用-S选项。该选项是大写字母S,不能和-s选项混淆,该选项是用来以颠倒的顺序打印依赖的。

lsblk -S
lsblk列出SCSI设备,而-s是逆序选项(将设备和分区的组织关系逆转过来显示),其将给出如下输出。输入命令:

lsblk -s
范例
root@ubuntu2204:~# lsblk -s
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                   7:0    0 40.4M  1 loop /snap/snapd/20671
loop1                   7:1    0 63.9M  1 loop /snap/core20/2182
loop2                   7:2    0 63.9M  1 loop /snap/core20/2105
loop3                   7:3    0   87M  1 loop /snap/lxd/27037
sda1                    8:1    0    1M  0 part 
└─sda                   8:0    0  200G  0 disk 
sda2                    8:2    0    2G  0 part /boot
└─sda                   8:0    0  200G  0 disk 
sr0                    11:0    1    2G  0 rom  
ubuntu--vg-ubuntu--lv 253:0    0   99G  0 lvm  /
└─sda3                  8:3    0  198G  0 part 
  └─sda                 8:0    0  200G  0 disk 


范例

[12:01:39 root@localhost ~][#lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0          11:0    1  9.8G  0 rom  
nvme0n1     259:0    0  200G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0  199G  0 part 
  ├─rl-root 253:0    0   70G  0 lvm  /
  ├─rl-swap 253:1    0    2G  0 lvm  [SWAP]
  └─rl-home 253:2    0  127G  0 lvm  /home

如何看内核

uname
打印系统信息



概要
uname [OPTION]...
主要用途
打印机器和操作系统的信息。
当没有选项时,默认启用 -s 选项。
如果给出多个选项或 -a 选项时,输出信息按以下字段排序:内核名称 主机名称 内核release 内核版本 机器名称 处理器 硬件平台 操作系统。
选项
-a, --all                  按顺序打印全部信息,如果 -p 和 -i 的信息是未知,那么省略。
-s, --kernel-name          打印内核名称。
-n, --nodename             打印网络节点主机名称。
-r, --kernel-release       打印内核release。
-v, --kernel-version       打印内核版本。
-m, --machine              打印机器名称。
-p, --processor            打印处理器名称。
-i, --hardware-platform    打印硬件平台名称。
-o, --operating-system     打印操作系统名称。
--help                     显示帮助信息并退出。
--version                  显示版本信息并退出。
返回值
返回0表示成功,返回非0值表示失败。




例子
# 单独使用uname命令时相当于uname -s
[root@localhost ~]# uname
Linux
# 查看全部信息
[root@localhost ~]# uname -a
Linux localhost 2.6.18-348.6.1.el5 #1 SMP Tue May 21 15:34:22 EDT 2013 i686 i686 i386 GNU/Linux
# 分别列出信息
[root@localhost ~]# uname -m
i686

[root@localhost ~]# uname -n
localhost    

[root@localhost ~]# uname -r
2.6.18-4-686     #内核信息

[root@localhost ~]# uname -s
Linux

[root@localhost ~]# uname -v
#1 SMP Tue May 21 15:34:22 EDT 2013

[root@localhost ~]# uname -p
i686

[root@localhost ~]# uname -i
i386

[root@localhost ~]# uname -o
GNU/Linux
注意
该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 uname,info coreutils 'uname invocation'。

cal
显示当前日历或指定日期的日历



补充说明
cal命令 用于显示当前日历,或者指定日期的日历,如果没有指定参数,则显示当前月份。

一个单一的参数指定要显示的年份 (1 - 9999) ; 注意年份必须被完全地指定: cal 89 不会 显示1989年的日历. 两个参数表示月份 (1 - 12) 和年份. 如果没有指定参数, 则显示当前月份的日历.

一年从Jan 1 (1 月 1 日) 开始.

格里高利历法改革(Gregorian Reformation)被认为发生于 1752 年 9 月 3 日. 在此之前, 多数国家已经认可这项改革(尽管有一些直到 20 世纪初才认可它). 那天之后的 10 天在这项改革被略去了, 所以那个月的日历有点不太寻常.

语法
cal [ -mjy ] [ 月份 ] [ 年份 ]
选项
-l # 显示单月输出;
-3 # 显示临近三个月的日历;
-s # 将星期日作为月的第一天;
-m # 显示星期一作为一周的第一天..  (缺省为星期日.)
-j # 显示儒略历的(Julian)日期 (以 1 为基的天数, 从 1 月 1 日开始计数) .
-y # 显示当前年份的日历..
参数
月:指定月份;
年:指定年份。
实例
单独执行cal命令会打印出日历:

[root@localhost ~]# cal
    十二月 2013     
日 一 二 三 四 五 六
 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 31
[root@localhost ~]# cal -j
        十二月 2013        
  日   一   二   三   四   五   六
335 336 337 338 339 340 341
342 343 344 345 346 347 348
349 350 351 352 353 354 355
356 357 358 359 360 361 362
363 364 365
[root@localhost ~]# cal -3
    十一月 2013           十二月 2013            一月 2014      
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六
                1  2   1  2  3  4  5  6  7            1  2  3  4
 3  4  5  6  7  8  9   8  9 10 11 12 13 14   5  6  7  8  9 10 11
10 11 12 13 14 15 16  15 16 17 18 19 20 21  12 13 14 15 16 17 18
17 18 19 20 21 22 23  22 23 24 25 26 27 28  19 20 21 22 23 24 25
24 25 26 27 28 29 30  29 30 31              26 27 28 29 30 31  

uptime
查看Linux系统负载信息



补充说明
uptime命令 能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

语法
uptime(选项)
选项
-V:显示指令的版本信息。
实例
使用uptime命令查看系统负载:

[root@LinServ-1 ~]# uptime -V    #显示uptime命令版本信息
procps version 3.2.7

[root@LinServ-1 ~]# uptime
 15:31:30 up 127 days,  3:00,  1 user,  load average: 0.00, 0.00, 0.00
显示内容说明:

15:31:30             # 系统当前时间
up 127 days,  3:00   # 主机已运行时间,时间越大,说明你的机器越稳定。
1 user               # 用户连接数,是总连接数而不是用户数
load average: 0.00, 0.00, 0.00         #  系统平均负载,统计最近1,5,15分钟的系统平均负载
那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

shutdown
用来执行系统关机的命令



补充说明
shutdown命令 用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。

语法
shutdown(选项)(参数)
选项
-c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
-f:重新启动时不执行fsck;
-F:重新启动时执行fsck;
-h:将系统关机;
-k:只是送出信息给所有用户,但不会实际关机;
-n:不调用init程序进行关机,而由shutdown自己进行;
-r:shutdown之后重新启动;
-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
参数
[时间]:设置多久时间后执行shutdown指令;
[警告信息]:要传送给所有登入用户的信息。
实例
指定现在立即关机:

shutdown -h now
指定5分钟后关机,同时送出警告信息给登入用户:

shutdown +5 "System will shutdown after 5 minutes"

screen
用于命令行终端切换



补充说明
Screen 是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

会话恢复

只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

GNU's Screen 官方站点:http://www.gnu.org/software/screen/

语法
# screen -AmRvx -[ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
选项
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window 
C-a p -> Previous,切换到前一个 window 
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换 
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load 
C-a k -> kill window,强行关闭当前的 window
C-a  -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 [vi 一样
    C-b Backward,PageUp 
    C-f Forward,PageDown 
    H(大写) High,将光标移至左上角 
    L Low,将光标移至左下角 
    0 移到行首 
    $ 行末 
    w forward one word,以字为单位往前移 
    b backward one word,以字为单位往后移 
    Space 第一次按为标记区起点,第二次按为终点 
    Esc 结束 copy mode 
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上
使用 screen
安装screen

流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。

[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#
创建一个新的窗口

安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:

[root@TS-DEV ~]# screen -S david 
screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如:

[root@TS-DEV ~]# screen vi david.txt
screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。

查看窗口和窗口名称

打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样:

0$ bash  1-$ bash  2*$ bash  
这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。

Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。

会话分离与恢复

你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件:

[root@TS-DEV ~]# screen vi /tmp/david.txt
之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示:

暂时中断会话

半个小时之后回来了,找到该screen会话:

[root@TS-DEV ~]# screen -ls
重新连接会话:

[root@TS-DEV ~]# screen -r 12865
一切都在。

当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:

清除dead 会话

如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:

关闭或杀死一个Screen会话

正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用ctrl+a 键,然后按下k键,最后当提示你是否要杀死这个会话时按下y键,这个快捷键会杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。

如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。

除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。

此外,这里再介绍另外一种快速杀死一个Screen会话的命令:

[root@TS-DEV ~]# screen -ls   #列出存在的会话
[root@TS-DEV ~]# screen -XS "会话id或者名称" quit
示例:

[root@TS-DEV ~]# screen -ls
There are screens on:
    11235.test    (01/25/2021 03:35:31 PM)    (Detached)
1 Sockets in /run/screen/S-root.
[root@TS-DEV ~]# screen -XS 11235 quit
#或者
[root@TS-DEV ~]# screen -XS test quit
screen 高级应用
会话共享

还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:

[root@TS-DEV ~]# screen -x
这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。

会话锁定与解锁

Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。

也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。

发送命令到screen会话

在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作:

[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com
这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。

屏幕分割

现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a 在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。

可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。

C/P模式和操作

screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a 或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。

一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后

hexdump
显示文件十六进制格式



补充说明
hexdump命令 一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。

语法
hexdump [选项] [文件]...
选项
-n length 只格式化输入文件的前length个字节。
-C 输出规范的十六进制和ASCII码。
-b 单字节八进制显示。
-c 单字节字符显示。
-d 双字节十进制显示。
-o 双字节八进制显示。
-x 双字节十六进制显示。
-s 从偏移量开始输出。
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'。
每个格式字符串由三部分组成,每个由空格分隔,第一个形如a/b,b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。format1和format2中可以使用类似printf的格式字符串,如:

%02d:两位十进制
%03x:三位十六进制
%02o:两位八进制
%c:单个字符等
还有一些特殊的用法:

%_ad:标记下一个输出字节的序号,用十进制表示。
%_ax:标记下一个输出字节的序号,用十六进制表示。
%_ao:标记下一个输出字节的序号,用八进制表示。
%_p:对不能以常规字符显示的用 . 代替。
同一行如果要显示多个格式字符串,则可以跟多个-e选项。

实例
hexdump -e '16/1 "%02X " "  |  "' -e '16/1 "%_p" "\n"' test
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  |  ................  
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F  |  ................  
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F  |   !"#$%&'()*+,-./ 





范例二


[12:32:40 root@localhost ~][#nano f1.txt
[12:33:01 root@localhost ~][#cat f1.txt
abvfgsdfndf
drgsdrh

[12:33:10 root@localhost ~][#hexdump -C f1.txt
00000000  61 62 76 66 67 73 64 66  6e 64 66 0a 64 72 67 73  |abvfgsdfndf.drgs|
00000010  64 72 68 0a 0a                                    |drh..|
00000015

image-20240223203415526

touch
创建新的空文件



补充说明
touch命令 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

语法
touch(选项)(参数)
选项
-a:或--time=atime或--time=access或--time=use  只更改存取时间;
-c:或--no-create  不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify  只更该变动时间;
-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间>  使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
参数
文件:指定要设置时间属性的文件列表。

实例
touch ex2
在当前目录下建立一个空文件ex2,然后,利用ls -l命令可以发现文件ex2的大小为0,表示它是空文件。

调用命令行历史

#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入!-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 开头的命令,并获取它的所有参数



范例:



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 光标在命令行首和光标之间移动
ctrl+ > 光标向右移动一个单词尾,相当于 Alt + f
ctrl+ <     光标向左移动一个单词首,相当于 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 + # 提示输入指定字符后,重复显示该字符#次




注意:Alt 组合快捷键经常和其它软件冲突
范例:xshell中启动 alt 键

$$

$$

查看系统的版本

cat /etc/os-release


范例:
root@ubuntu2204:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
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"
UBUNTU_CODENAME=jammy


[12:05:17 root@localhost ~][#cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.3 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.3"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.3 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.3"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.3"



范例:比较 “ ” ,‘ ’, ``三者区别


[root@centos8 ~]#echo "echo $HOSTNAME"

echo centos8.localdomain

[root@centos8 ~]#echo 'echo $HOSTNAME'

echo $HOSTNAME

[root@centos8 ~]#echo `echo $HOSTNAME`

centos8.localdomain

\#结论:

单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,"最傻"

双引号:弱引用,不能识别命令,可以识别变量,"半傻不精"

反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内

容当成命令进行执行后,再交给调用反向单引号的命令继续,"最聪明“

tab 键补全

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

范例:

[12:50:22 root@localhost ~][#host host hostid hostname hostnamectl [12:50:22 root@localhost ~][#hostname
hostname     hostnamectl  
[12:50:22 root@localhost ~][#hostname hostname hostnamectl [12:50:22 root@localhost ~][#hostnamectl 
chassis     deployment  hostname    icon-name   location    status      
[12:50:22 root@localhost ~][#hostnamectl 

路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名

如果惟一:则直接补全

否则:再次Tab给出列表

双击Tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令


/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 (centos7 不支持)
=2Tab 相当于ls –A (centos7不支持)

安装区别系统开头

Ubuntu----apt -y install 软件名

centos-----yum -y install 软件名

文件管理

img

img

image-20240223211352850

常见的文件系统目录功能
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
 b: block device,随机访问
 c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
 bin: 保证系统拥有完整功能而提供的应用程序
 sbin:
 lib:32位使用
 lib64:只存在64位系统
 include: C程序的头文件(header files)
 share:结构化独立的数据,例如doc, man等
       local:第三方应用程序的安装位置
   bin, sbin, lib, lib64, etc, share
/var: variable data files
 cache: 应用程序缓存数据目录
 lib: 应用程序状态信息数据
 local:专用于为/usr/local下的应用程序存储可变数据
 lock: 锁文件
 log: 日志目录及文件
 opt: 专用于为/opt下的应用程序存储可变数据
 run: 运行中的进程相关数据,通常用于存储进程pid文件
 spool: 应用程序数据池
 tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
应用程序的组成部分
 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, 
/usr/local/share/doc

image-20240223211438747

重点

命令

who  
whoami
who am i

tty
hostname
hostnamectl set-hostname xxx
timedatectl set-timezone Asia/Shanghai
date
ps
ip a
nano
vi  
echo $PS1   
一个命令CMD1想调用另一个命令CMD2的执行结果,就需要将CMD2放在反向引号中 `CMD2`




范例:
[12:48:09 root@localhost ~][#touch `uname -r`.log
[12:49:56 root@localhost ~][#ls
2024-02-23.log  5.14.0-362.8.1.el9_3.x86_64.log  anaconda-ks.cfg  a.txt  bashrc  f1.txt
[12:49:58 root@localhost ~][#rm 5.14.0-362.8.1.el9_3.x86_64.log
rm: remove regular empty file '5.14.0-362.8.1.el9_3.x86_64.log'? y
[12:50:20 root@localhost ~][#ls
2024-02-23.log  anaconda-ks.cfg  a.txt  bashrc  f1.txt




touch date +"\%F".log
这个命令在Bash shell中是正确的,它会根据当前系统日期创建一个日志文件,并将文件名设置为形如 `2023-02-24.log` 的格式。这里的 `\%F` 是对特殊字符 `%` 进行转义,确保 `date` 命令正确解析 `%F` 作为日期格式而非shell的特殊含义。

执行此命令后,将会生成一个以当前日期命名的日志文件,例如:

```bash
touch "$(date +"\%F").log"
```

运行上述命令后,如果今天是2023年2月24日,则会在当前目录下创建一个名为 `2023-02-24.log` 的空文件。


image-20240223204821103

命令补全

CentOS/Rocky
yum -y install bash-completio


Ubuntu
apt -y install bash-completion

问题

安装screen遇到了问题

无法安装

在CentOS或RHEL系统中,如果你使用的是较新版本(如CentOS 8/RHEL 8及更高版本),默认的软件包管理器已经从yum变更为dnf。因此,你需要用dnf命令来安装screen工具:

sudo dnf install screen -y

若你确实正在使用旧版的基于yum的系统,并且出现上述错误信息,可能是因为你的系统仓库配置不正确或者screen软件包未包含在当前的系统仓库中。为了解决这个问题,请尝试以下步骤:

  1. 更新你的仓库缓存:

    sudo yum makecache fast
    
  2. 如果是EPEL(Extra Packages for Enterprise Linux)仓库中的软件包,在安装screen之前需要先安装EPEL仓库(对于支持EPEL的系统):

    sudo yum install epel-release -y
    
  3. 安装完成后再次尝试安装screen

    sudo yum install screen -y
    

如果问题仍然存在,确认你的系统是否支持screen软件包,或者检查是否有其他可用的第三方仓库可以提供该软件包。

posted @ 2024-02-23 21:22  三思博客  阅读(22)  评论(0编辑  收藏  举报