用户类型
-
root用户
一个特殊的管理用户
也被称为超级管理员
root拥有最高权限,接近完整的系统控制
对系统的损害接近无限的能力
除非必要,不要登录为root
-
普通用户
权限有限
造成损害能力有限
注意:怎样区分超级用户和普通用户
超级用户唯一标识:uid=0
普通用户:uid>100
终端
终端的类型
控制台终端: /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远程连接
设备终端:键盘、鼠标、显示器
查看当前终端设备
[19:36:02 root@centos8 ~]#tty
/dev/pts/1
图形界面和字符界面的切换
[19:41:42 root@centos8 ~]#init 3 #切换为字符界面
[19:41:42 root@centos8 ~]#init 5 #切换为图形界面
查看终端的连接情况
#查看有几个终端在连接
[19:50:25 root@centos8 ~]#who
root pts/1 2020-07-25 08:22 (10.0.0.1)
root pts/0 2020-07-27 19:49 (10.0.0.1)
#查看哪个是我的终端
[19:51:34 root@centos8 ~]#who am i
root pts/1 2020-07-25 08:22 (10.0.0.1)
#查看其它终端在干什么
[19:52:39 root@centos8 ~]#w
19:54:02 up 2 days, 11:33, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 10.0.0.1 Sat08 1.00s 1.42s 0.01s w
root pts/0 10.0.0.1 19:49 10.00s 0.03s 0.00s ping 127.0.0.1
每个终端窗口对应的相应的用户,互相之间不受影响
交互式接口
交互式接口:启动终端后,在终端设备启动一个交互式程序
交互式接口类型
-
GUI:Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面)
-
CLI:Command Line Interface
==shell程序==
什么是shell
==shell是Linux系统的用户界面,提供了用户与操作系统内核交互的一种接口,它接受用户输入的命令并把它送入内核去执行==
shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给该程序并执行
shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替
各种shell
- sh:Steve Bourne
- ==bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用==
- csh:c shell , C 语言风格
- tcsh
- ksh :Korn Shell, AIX 默认 shell
- zsh: MacOS默认shell
bash shell
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与sh兼容
显示当前使用的shell
[19:54:39 root@centos8 ~]#echo $SHELL
/bin/bash
查看当前系统支持的shell类型
[20:16:30 root@centos8 ~]#cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
设置主机名
#查看主机名
[20:16:32 root@centos8 ~]#hostname
centos8.xbd.com
#临时设置主机名
[20:19:02 root@centos8 ~]#hostname centos.ding.com
[20:19:33 root@centos8 ~]#hostname
centos.ding.com
#永久设置主机名
[20:19:36 root@centos8 ~]#hostnamectl set-hostname centos8.ding.org #命令修改
[20:20:40 root@centos8 ~]#hostname
centos8.ding.org
[20:20:43 root@centos8 ~]#vim /etc/hostname #修改配置文件
注意
- ==主机名不能用下划线,不能用“.+数字”结尾,但支持横线,可使用字母横线或数字组合==
- ==有些软件对主机名有特殊要求==
#主机名设置不规范出现的问题
[root@centos8 ~]#hostnamectl set-hostname centos8.1
[root@centos8 ~]#systemctl restart postfix
Job for postfix.service failed because the control process exited with error code.
See "systemctl status postfix.service" and "journalctl -xe" for details.
命令提示符(prompt)
登录Linux系统后,系统默认的命令提示符没有丝毫个性,无法明显区分测试环境和生产环境,而导致误操作。可以通过修改PS1变量来实现个性的提示符个格式,避免出现这种低级错误。
默认的提示符
- ‘#’:超级用户
- $:普通用户
显示当前提示符格式
[root@centos8 ~]#echo $PS1
\[\e[1;35m\][\u@\h \W]\$\[\e[0m\]
修改提示符格式案例
PS1="\[\e[1;5;41;33m\][\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永久保存提示符格式
#在/etc/profile.d/下创建一个以“.sh”结尾的文件
[root@centos8 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh
[root@centos8 ~]#cat /etc/profile.d/env.sh
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
[root@centos8 ~]# exit
#实现Ubuntu永久保存提示符
[root@ubuntu2004 ~]#tail -1 .bashrc
PS1='\[\e[1;35m\][\u@\h \W]\$\[\e[0m\]'
提示符格式说明
- \e 控制符\033
- \u 当前用户
- \h 主机名简称
- \H 主机名
- \w 当前工作目录
- \W 当前工作目录基名
- \t 24小时时间格式
- \T 12小时时间格式
- ! 命令历史数
- "#" 开机后命令历史数
执行命令
执行命令的过程
命令执行的背后的原理:
==终端上敲入命令之后,shell会去判断是否为内部命令,如果不是内部命令那么shell会到$PASH下面的路径下去找对应的可执行文件,找到命令之后由其分析后交给内核分配资源将其运行起来==
shell可执行的两类命令
- ==内部命令:集成在shell程序本身的命令==
- ==外部命令:在文件系统路径下有对应的可执行程序文件==
判断是内部命令还是外部命令
[21:03:25 root@centos8 ~]#type cd
cd is a shell builtin #提示为内部命令
[21:03:36 root@centos8 ~]#type ping
ping is hashed (/usr/sbin/ping) #提示为外部命令
#又是外部命令又是内部命令
[21:04:11 root@centos8 ~]#type -a echo
echo is a shell builtin
echo is /usr/bin/echo
内部命令相关
help :内部命令列表
enable:管理内部命令
- enable cmd 启用内部命令
- enable –n cmd 禁用内部命令
- enable –n 查看所有禁用的内部命令
执行外部命令
查看外部命令的路径
#which查看外部命令的路径
[21:13:40 root@centos8 ~]#which cd
/usr/bin/cd
#whereis查看外部命令路径的同时还能查看命令的man手册在哪
[21:14:22 root@centos8 ~]#whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
Hash缓存表
==系统的初始hash表为空,当外部命令执行时,默认会从PASH路径下寻找该命令,找到该命令后,命令的路径会缓存在hash表中,当下次再执行命令时,shell会先去查看hash表,存在将执行,不存在将再PASH路径下寻找,利用hash缓存表能大大提高命令的执行效率==
hash 命令的常见用法
- hash 显示hash缓存
- hash -l 显示hash缓存,可作为输入使用
- hash -p path name 将命令全路径path起别名为name
- hash -t name 打印缓存中name的路径
- hash -d name 清除name缓存
- hash -r 清除缓存
缓存的优缺点
优点:效率提升
缺点:内存资源,数据易丢失,不能马上同步数据,如果把命令所在的文件一定到别的路径下就会找不找命令
命令的别名
对经常执行的比较长的命令,可以将其定义成较短的别名,以便于执行
对别名的操作
#查看当前shell可以使用所有命令的别名
[21:14:35 root@centos8 ~]#alias
alias cman='man -M /usr/local/zhman/share/man/zh_CN'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
......
#定义别名
alias NAME='VALUE'
[21:52:24 root@centos8 ~]#echo free='free -h' >> .bashrc
[21:53:00 root@centos8 ~]#free
total used free shared buff/cache available
Mem: 1.8Gi 339Mi 128Mi 14Mi 1.3Gi 1.3Gi
Swap: 2.0Gi 12Mi 2.0Gi
#取消别名
unalias
unalias [-a] name [name ...]
unalias -a #取消所有别名
注意:在命令中配置别名只对当前shell进程有效,想要永久生效需要写入配置文件中。
- 对当前用户生效:./.bashrc
- 对所有用户生效:/etc/bashrc
编辑好的配置文件不会立即生效,bash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file
如果别名和原命令同名,想要执行原命令,可使用以下方法
\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令
命令执行的优先级
有时候内部命令和外部命令重时,优先执行内部命令,再执行外部命令
别名>内部命令>外部命
命令的格式
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
- 多个命令可以用 ";" 符号分开
- 一个命令可以用\分成多行
常见命令
查看硬件信息
查看CPU信息
#lscpu命令查看
[22:01:37 root@centos8 ~]#lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 #每个core有几个线程
Core(s) per socket: 1 #每个槽位有1个core
Socket(s): 2 #服务器面板上有2个ccpu槽位
NUMA node(s): 1 #nodes的数量
.......
#cat /proc/cpuinfo也可以查看
[07:41:39 root@centos8 ~]#cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
stepping : 9
microcode : 0x20
cpu MHz : 2594.119
cache size : 3072 KB
.......
查看内存大小
[07:48:54 root@centos8 ~]#free
total used free shared buff/cache available
Mem: 1.8Gi 340Mi 127Mi 14Mi 1.3Gi 1.3Gi
Swap: 2.0Gi 12Mi 2.0Gi
[07:48:57 root@centos8 ~]#free -h #加-h参数显示单位
total used free shared buff/cache available
Mem: 1.8Gi 340Mi 126Mi 14Mi 1.3Gi 1.3Gi
Swap: 2.0Gi 12Mi 2.0Gi
[07:49:00 root@centos8 ~]#cat /proc/meminfo
MemTotal: 1849464 kB
MemFree: 130360 kB
MemAvailable: 1321952 kB
Buffers: 108 kB
Cached: 1304468 kB
SwapCached: 2472 kB
Active: 1134300 kB
Inactive: 274844 kB
Active(anon): 51912 kB
Inactive(anon): 67788 kB
Active(file): 1082388 kB
Inactive(file): 207056 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2084348 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 102784 kB
Mapped: 60264 kB
Shmem: 15136 kB
Slab: 164188 kB
SReclaimable: 66004 kB
SUnreclaim: 98184 kB
KernelStack: 6240 kB
PageTables: 8468 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3021880 kB
Committed_AS: 746972 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 18432 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: 255872 kB
DirectMap2M: 1841152 kB
查看硬盘和分区情况
[07:50:43 root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /
├─sda3 8:3 0 2G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 47G 0 part /data
sr0 11:0 1 6.7G 0 rom /run/media/ding/CentOS-8-BaseOS-x86_64
07:53:06 root@centos8 ~]#cat /proc/partitions
major minor #blocks name
8 0 104857600 sda
8 1 1048576 sda1
8 2 52428800 sda2
8 3 2097152 sda3
8 4 1 sda4
8 5 49281024 sda5
11 0 6968320 sr0
查看系统版本信息
查看内核信息
#Centos8
[07:53:46 root@centos8 ~]#uname -r
4.18.0-80.el8.x86_64
#Centos7
[17:34:33 root@centos7 ~]#uname -r
3.10.0-862.el7.x86_64
查看操作系统的发行版本
#Centos8
[07:56:19 root@centos7 ~]#cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[07:57:51 root@centos7 ~]#cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@centos8 ~]#lsb_release -a #需要安装此程序
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 8.1.1911 (Core) Release: 8.1.1911
Codename: Core
#ubuntu
root@ubuntu1804:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 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
root@ubuntu1804:~# cat /etc/issue
Ubuntu 18.04.4 LTS \n \l
[root@ubuntu1804 ~]#lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
日期和时间
Linux的两个时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:来自主板
相关命令
- date:显示和设置系统时间
[07:55:28 root@centos8 ~]#date +%s
1595895190
[08:13:14 root@centos8 ~]#date +%T
08:13:17
[08:14:42 root@centos8 ~]#date -d @`date +%s`
Tue Jul 28 08:14:58 CST 2020
[08:18:44 root@centos8 ~]#date -d @1595895190 +%F_%T
2020-07-28_08:13:10
[08:23:19 root@centos8 ~]#date -s '-1 year'
Sun Jul 28 08:24:21 CST 2019
-
clock,hwclock:显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区
#查看系统时区
[08:26:29 root@centos8 ~]#ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Jul 21 08:40/etc/localtime>../usr/share/zoneinfo/Asia/Shanghai
#查看系统可支持的时区
[root@centos8 ~]#timedatectl list-timezones
#设置系统时区
[root@centos8 ~]#timedatectl set-timezone Asia/Shanghai
#启用所设置的时区
[root@centos8 ~]#timedatectl status
日历
[08:32:44 root@centos8 ~]#cal
July 2020
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 31
[08:34:56 root@centos8 ~]#cal 9 1752
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
关机和重启
关机
- halt
- poweroff
重启
-
reboot
-f:强制,不调用shutdown
-p:切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot -h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间
用户登录信息查看命令
- whoami:查看当前终端登录用户
- who:查看当前所有终端登录的用户
- w:查看系统所有登录的用户及其所有操作