Linux基础入门

用户类型

  • 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:查看系统所有登录的用户及其所有操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容