Linux哲学思想和常用命令

一、Linux哲学思想

  • 一切皆文件
    • 不管是普通的文件,还是目录、字符设备、快设备、套接字等在Unix中都是以文件形式对待,采用统一的接口被提供
  • 配置数据存储在文本中
    • Linux中大部分配置文件存放在文本中,方便我们进行修改来解决一些发生的错误;像Windows中的程序配置文件放在注册表中,注册表采用若干个二进制文件,出错很难修改。
  • 提供许多小型的单一用途的程序
    • 使用单一的程序就可以完成相应的操作
  • 避免令人困惑的用户界面
    • 更多的采用字符界面,图形界面会产生一些虚假的现象,执行过程中不稳定
  • 连接程序,完成复杂的功能
    • 某些复杂的任务,可以连接多个简单的程序来实现其复杂的功能。像编写SHELL程序。

一、查看当前所在的终端

[root@Rocky8-en ~]# tty
/dev/pts/0						// 伪终端
[root@Rocky8-en ~]# tty
/dev/tty1							// 虚拟终端

二、Shell

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

-- 显示当前使用的shell
[root@Rocky8-en ~]# echo $SHELL
/bin/bash
-- 显示当前系统使用的所有shell
[root@Rocky8-mini ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
wh@unbuntu18:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash

三、设置主机名

-- 临时生效
hostname NAME
-- 永久生效(CentOS7和Ubuntu18.04以上版本)
hostnamectl set-hostname NAME

四、Shell中的执行命令

1、shell 中可执行的两类命令

  • 内部命令:由shell自带的,而且通过某命令形式提供,用户登录后自动加载并常驻内存中
-- type 判断指定的命令时外部命令还是内部命令
[root@Rocky8-en ~]# type  -a cat       // 外部命令
cat is /usr/bin/cat
[root@Rocky8-en ~]# type -a echo      // 内部命令也是外部命令
echo is a shell builtin
echo is /usr/bin/echo
-- 列出当前shell所有的内部命令
[root@Rocky8-en ~]# enable 
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
···
···
enable wait
  • 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
-- 查看外部名令的路径
[root@Rocky8-en ~]# which cat
/usr/bin/cat
[root@Rocky8-en ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz

Hash缓存表
​ 系统初始时hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当在此使用该命令时,shell解释器首先查看hash表。
常见用法
hash 显示hash缓存
hash -l 显示hash缓存,可作为输入使用
hash -p PATH NAME 将命令全路径path起别名为name
hash -t NAME 打印缓存中命令的路径
hash -d NAME 清除指定命令缓存
hash -r 清除缓存

[root@Rocky8-mini ~]# hash -t clock
/usr/sbin/clock
=========================================================================
[root@Rocky8-mini ~]# hash -l
builtin hash -p /usr/bin/dnf dnf
builtin hash -p /usr/bin/screen screen
builtin hash -p /usr/bin/systemctl systemctl
builtin hash -p /usr/bin/vim vim
builtin hash -p /usr/bin/date date
builtin hash -p /usr/bin/uname uname
builtin hash -p /usr/bin/who who
builtin hash -p /usr/bin/whoami whoami
builtin hash -p /usr/bin/man man
builtin hash -p /usr/sbin/shutdown shutdown
builtin hash -p /usr/sbin/clock clock
builtin hash -p /usr/sbin/hwclock hwclock
===========================================================================
[root@Rocky8-mini ~]# hash -d clock
[root@Rocky8-mini ~]# hash
hits    command
   1    /usr/bin/dnf
   1    /usr/bin/screen
   1    /usr/bin/systemctl
   1    /usr/bin/vim
   5    /usr/bin/date
   1    /usr/bin/uname
   1    /usr/bin/who
   1    /usr/bin/whoami
   2    /usr/bin/man
   8    /usr/sbin/shutdown
   3    /usr/sbin/hwclock
==============================================================================
[root@Rocky8-mini ~]# hash -r
[root@Rocky8-mini ~]# hash
hash: hash table empty   

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

-- 显示当前shell进程所有可用的命令别名
[root@Rocky8-mini ~]# alias
-- 定义别名     alias 新名='需要定义别名的命令'
[root@Rocky8-en ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  epel-modular.repo  epel.repo  epel-testing-modular.repo  epel-testing.repo
[root@Rocky8-en ~]# alias lsrepo='ls /etc/yum.repos.d'
[root@Rocky8-en ~]# lsrepo
CentOS-Base.repo  epel-modular.repo  epel.repo  epel-testing-modular.repo  epel-testing.repo
-- 取消别名	  	unalias 别名
[root@Rocky8-en ~]# unalias lsrepo
[root@Rocky8-en ~]# lsrepo
bash: lsrepo: command not found...
-- 定义别名配置永久有效
* 仅对当前用户		~/.bashrc
* 对所有用户     /etc/bashrc
-- 如果别名同原命令,仍然向执行原命令
\ALIASNAME
'ALIASNAME'

3、命令的执行次序

  • 系统先判断是否是别名,如果是就立即执行
  • 如果不是别名,判断是否是内部命令,是就执行
  • 如果不是内部命令,查询hash对应的缓存区中是否有此命令对应的路径,如果有就按照此路径在磁盘上查找此命令的文件并执行。如果找不到对应的文件,无法执行此命令。
  • 如果在hash缓存区中没有对应的命令,则按照PATH系统变量指定的路径进行搜索,如果找到了,则立刻执行,停止向后查找。
  • 如果在PATH系统变量中也无法查找到,则提示没有此命令。

五、常见命令

1、查看 CPU的架构信息

[root@Rocky8-mini ~]# lscpu
Architecture:        x86_64                      //  cpu架构信息
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2													//  虚拟机的cpu核数
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
BIOS Vendor ID:      GenuineIntel
CPU family:          6
Model:               142
Model name:          Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz            // 物理机的CPU型号
BIOS Model name:     Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Stepping:            9
CPU MHz:             2712.002
BogoMIPS:            5424.00
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            3072K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities
=========================================================================================
[root@Rocky8-mini ~]# cat /proc/cpuinfo      // 将每一个cpu的完整信息展现出来
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 142
model name      : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
stepping        : 9
microcode       : 0xc6
cpu MHz         : 2712.002
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips        : 5424.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           : 142
model name      : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
stepping        : 9
microcode       : 0xc6
cpu MHz         : 2712.002
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips        : 5424.00
clflush size    : 64
cache_alignment : 64
address sizes   : 45 bits physical, 48 bits virtual
power management:

2、查看内存大小

-- 展示系统内存的使用情况,-h 选项便于可读 --
[root@Rocky8-mini ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.7Gi       254Mi       1.1Gi       8.0Mi       437Mi       1.3Gi
Swap:         2.0Gi          0B       2.0Gi
=========================================================================================
[root@Rocky8-mini ~]# cat /proc/meminfo
MemTotal:        1833232 kB
MemFree:         1124496 kB
MemAvailable:    1410600 kB
Buffers:            3164 kB
Cached:           400380 kB
SwapCached:            0 kB
Active:           246284 kB
Inactive:         257196 kB
Active(anon):       1928 kB
Inactive(anon):   106892 kB
Active(file):     244356 kB
Inactive(file):   150304 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2129916 kB
···
···
DirectMap1G:           0 kB

3、查看硬盘和分区情况

[root@Rocky8-mini ~]# lsblk      // 默认查看所有设备,也可后接设备,查看指定的设备
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0    0  50G  0 disk 
├─sda1        8:1    0   1G  0 part /boot
└─sda2        8:2    0  49G  0 part 
  ├─rl-root 253:0    0  47G  0 lvm  /
  └─rl-swap 253:1    0   2G  0 lvm  [SWAP]
sr0          11:0    1  10G  0 rom  
=========================================================================================
[root@Rocky8-mini ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   52428800 sda
   8        1    1048576 sda1
   8        2   51379200 sda2
  11        0   10465280 sr0
 253        0   49246208 dm-0
 253        1    2129920 dm-1

4、查看系统版本信息

  • 查看系统架构
[root@Rocky8-mini ~]# arch
x86_64
  • 查看内核版本
[root@Rocky8-mini ~]# uname -r
4.18.0-348.el8.0.2.x86_64
[root@centos7-mini ~]# uname -r
3.10.0-1160.el7.x86_64
  • 查看操作系统发行版本
[root@Rocky8-mini ~]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)
=========================================================================================
[root@Rocky8-mini ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="8.5 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.5 (Green Obsidian)"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:rocky:rocky:8.5:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky Linux"
ROCKY_SUPPORT_PRODUCT_VERSION="8"

5、日期和时间
Linux的两种时钟:

  • 系统时钟 Linux内核通过CPU工作频率进行计时
  • 硬件时钟 计算机主板的内部物理芯片计时
    (1)date
    date - print or set the system date and time
    date [OPTION]... [+FORMAT]
    date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
-- 显示当前默认时间格式 --
[root@Rocky8-mini ~]# date   
Wed Mar  2 01:56:39 EST 2022
-- 只显示当前日期 --
[root@Rocky8-mini ~]# date +%F
2022-03-02
-- 只显示当前的小时、分钟、秒数时间 --
[root@Rocky8-mini ~]# date +%T
02:12:05
-- 显示昨天的日期 --
[root@Rocky8-mini ~]# date -d '-1 day' +%F
2022-03-01
-- 设置当前的日期为明年的日期 --
[root@Rocky8-mini ~]# date -s '1 year' +%F
2023-03-02
[root@Rocky8-mini ~]# date "+%F %T"
2023-03-02 02:10:19
-- 设置时间为2022年7月1日12点30分30秒 --
[root@Rocky8-mini ~]# date 070112302022.30
Fri Jul  1 12:30:30 EDT 2022

(2)hwclock/clock 操作硬件时钟
-s 以硬件时间为准,设定系统时间
-w 以系统时间为准,设定硬件时间

-- 显示硬件时间 --
[root@Rocky8-mini ~]# hwclock 
2022-03-04 06:30:41.965061-05:00
-- 调整系统时间 --
[root@Rocky8-mini ~]# hwclock -s
[root@Rocky8-mini ~]# clock;date
2022-03-04 06:32:00.405387-05:00
Fri Mar  4 06:32:00 EST 2022

6、关机和重启
关机:shutdown、halt、poweroff
重启:reboot

shutdown now 立刻关机
				 +# #分钟之后关机
				 hh:mm    指明具体时间
				 -c  取消关机
				 -r 重启
[root@Rocky8-mini ~]# shutdown 12:30   //十二点半关机
Shutdown scheduled for Fri 2022-03-04 12:30:00 EST, use 'shutdown -c' to cancel.
[root@Rocky8-mini ~]# shutdown +5      // 五分钟后关机
Shutdown scheduled for Fri 2022-03-04 06:42:52 EST, use 'shutdown -c' to cancel.
[root@Rocky8-mini ~]# date
Fri Mar  4 06:37:58 EST 2022

7、用户登录信息查看
whoami 显示当前登录的有效用户
who 显示系统当前所有的登录会话
w 显示系统当前所有的登录会话及所做的操作

[root@Rocky8-mini ~]# whoami
root
[root@Rocky8-mini ~]# who
root     pts/0        2022-03-04 06:16 (192.168.84.1)
[root@Rocky8-mini ~]# w
 06:49:03 up 48 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.84.1     06:16    5.00s  0.15s  0.00s w

8、会话管理
​ 当我们打开一个终端窗口的时候,终端的窗口与启动的进程连接在一起。如果此时窗口突然关闭了,那我们正在执行的某个进程也会终止。使用会话,可以在终端窗口不正常关闭的同时,依然保存着他当前的会话。
image
删除掉此screen会话,在新建一个正常会话,查看ping命令是否还在继续执行

[root@Rocky8-mini ~]# ps aux | grep ping      // ping 命令还在继续执行
root        2464  0.0  0.2  55252  5012 pts/0    S+   10:09   0:00 ping www.baidu.com
root        2495  0.0  0.0  12136  1176 pts/3    S+   10:14   0:00 grep --color=auto ping
[root@Rocky8-mini ~]# kill -15 2464         // 终止此命令
[root@Rocky8-mini ~]# ps aux | grep ping
root        2497  0.0  0.0  12136  1176 pts/3    S+   10:14   0:00 grep --color=auto ping

9、命令行历史(history)
​ 当执行一条命令时,系统会在内存记录执行过的命令,当用户退出时,会将内存的命令写入对应的历史文件中(~/.bash_history)
常用选项:

-c:清空命令历史
-d NUMBER:删除历史中指定的第几条命令
n:显示最近到的n条历史
-a:追加新执行的命令到历史文件中

命令历史环境变量

HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T `whoami` " 显示时间和用户
-- 设置查看命令历史时可以查看执行的时间 --
[root@Rocky8-mini ~]# export HISTTIMEFORMAT="%F %T"
[root@Rocky8-mini ~]# history | head
    1  2022-03-04 10:11:16ip a
    2  2022-03-04 10:11:16systemctl restart network
    3  2022-03-04 10:11:16systemctl restart network-manager
    4  2022-03-04 10:11:16quit
    5  2022-03-04 10:11:16exit
    6  2022-03-04 10:11:16ls]
    7  2022-03-04 10:11:16ls
    8  2022-03-04 10:11:16cd /root
    9  2022-03-04 10:11:16ls
   10  2022-03-04 10:11:16cd /honme
==============================================================================
-- 如果需要永久存储,需要写进配置文件中 --
[root@Rocky8-mini ~]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export HISTTIMEFORMAT="%F %T"
posted @   wuhaolam  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示