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、会话管理
当我们打开一个终端窗口的时候,终端的窗口与启动的进程连接在一起。如果此时窗口突然关闭了,那我们正在执行的某个进程也会终止。使用会话,可以在终端窗口不正常关闭的同时,依然保存着他当前的会话。
删除掉此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"
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)