2.Linux入门

Linux从入门

linux介绍

什么是Linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

img

Linux发行版本

Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

img

Linux发行版本又分为稳定版和开发版,两种版本是相互关联,相互循环:

  • 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
  • 开发版:由于要试验各种解决方案,所以变化很快。

Linux的内核是什么?

Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,在有必要时分配硬件,并根据需要时执行软件。

Linux开机启动过程?

  1. 主机加电自检,加载BIOS硬件信息。
  2. 读取MBR的引导文件
  3. 引导Linux内核。
  4. 运行第一个进程init (进程号永远为1)
  5. 进入相应的运行级别。
  6. 运行终端,输入用户名和密码。

Linux系统运行级别

  1. 关机

  2. 单用户模式

  3. 字符界面(不支持网络)

  4. 字符界面

  5. 未分配使用

  6. 图形化界面

  7. 重启

命令行操作

命令基本用法

Linux命令格式:

command  [-options]  [parameter1]

command:命令名称

[-options]:选项,可以用来对命令进行控制,也可以省略,[]代表可选

parameter1:传给命令的参数:可以是零个一个或多个。

什么是shell

在这里插入图片描述

shell也被称为Linux命令的解释器

查看系统默认shell

echo $BASH

查看系统各个版本shell

[root@localhost ~]#cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
更改命令终端颜色

登录Linux后,默认的系统命令提示符没有个性,无法明显辨别生产和测试环境,而导致错误。

可以通过修改PS1变量实现个性提示符格式,避免命令输错终端错误。

默认的提示符

#Centos默认提示符
[root@localhost ~]#
#Ubuntn默认提示符
[yyc@localhost ~]$

@符合前root 代表时当前登录用户

localhost 代表显示系统名称前几位

~ 代表用户在家目录

# 代表是管理员账号 $代表是普通账户

Centos7以上版本设置

# 默认
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
# 实例
[root@localhost ~]#PS1="\[\e[1;35m\][\u@\h \w]\\$\[\e[0m\]"
#永久保存
echo PS1="\[\e[1;35m\][\u@\hw \w]\\$\[\e[0m\]" > /etc/profile.d/test.sh
#提示  [\e[1;35m\]  35为紫色 可进行更改
[root@localhost ~]#echo $PS1
\[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
# 命令行彩色并显示时间模板
[15:04:41 root@Centos8-2 ~]#PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]\\$"
创建登录提示文件
vi /etc/motd


//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                    //

查看帮助文档

help

一般是linux命令自带的帮助信息

如:ls --help

man(manual)

man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明

该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。

例:man ls ; man 2 printf

man中各个section意义如下:

  1. Standard commands(标准命令)
  2. System calls(系统调用,如open,write)
  3. Library functions(库函数,如printf,fopen)
  4. Special devices(设备文件的说明,/dev下各种设备)
  5. File formats(文件格式,如passwd)
  6. Games and toys(游戏和娱乐)
  7. Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
  8. Administrative Commands(管理员命令,如ifconfig)
    man是按照手册的章节号的顺序进行搜索的。

man设置了如下的功能键:

功能键功能
空格键显示手册页的下一屏
Enter键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出man命令
h列出所有功能键
/word搜索word字符串

注意:实际上,我们不用指定第几个章节也用查看,如,man ls

Linux命令小技巧

设置主机名
# 临时生效
hostname testname

# 永久生效
hostnamectl set-hostname testname

注意:修改主机名只可以使用 字母 数字 和横线。

有些软件对主机名有特殊要求

命令为什么要永久生效

临时生效是保存在运行内存,当系统断电或重启命令会失效,

永久保存相当于把这条命令写到了系统文件中重启完系统不会失效。

tab键自动补全

在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令。

history游览历史命令

当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来

history保留了最近执行的命令记录,默认可以保留1000。
历史清单从0开始编号到最大值。
常见用法:

history N		显示最近N条命令
history -c		清除所有的历史记录
history -w  xxx.txt	保存历史记录到文本xxx.txt
命令行中的ctrl组合键
  • Ctrl+c 结束正在运行的程序

  • Ctrl+d 结束输入或退出shell

  • Ctrl+s 暂停屏幕输出【锁住终端】

  • Ctrl+q 恢复屏幕输出【解锁终端】

  • Ctrl+l 清屏,【是字母L的小写】等同于Clear

  • 当前光标到行首:ctrl+a

  • 当前光标到行尾:ctrl+e

  • 删除当前光标到行首:ctrl+u

  • 删除当前光标到行尾:ctrl+k

  • Ctrl+y 在光标处粘贴剪切的内容

  • Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】

  • Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符

  • Ctrl+x+u 撤销操作

  • Ctrl+z 转入后台运行

Linux命令

执行命令过程

输入命令后回车,shell程序找到输入命令对应可执行程序或代码,其由分析后提交给内核分配资源并其运行起来。

shell中可执行的两类命令

内部命令:由系统shell自带的,而且通过某命令形式来提供,用户登录后自动加载和常驻在内存中。

外部命令:在系统文件路径下有对应的可执行程序文件,当执行命令时才从磁盘加载到内存中,执行完毕并从内存中删除。

区别命令时内部和外部命令
type 命令

内部命令

[root@localhost ~]#type cd
cd 是 shell 内嵌

外部命令 后面出现路径就是外部命令

[root@localhost ~]#type ssh
ssh 是 /usr/bin/ssh
# 存放外部命令的路径
[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo
# echo 是内部命令命令也是外部命令   内部命令执行优先级高

echo 有内部命令命令了,为什么还要有个外部命令?
echo命令比较重要,本终端有不代表别的终端有echo命令
hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到改命令执行并记录到hash表中,当再次使用该命令时,shell解释器会先查看hash表,存在将执行,如果不存在将会从PATH路径下去寻找,利用hash缓存表可大大提升外部命令调用速率。

  • hash 显示hash缓存
  • hash -d name 清楚name缓存
  • hash -r 清楚全部hash缓存
命令别名

对于经常执行较长的命令,可以将其定义较短或比较容易记住的单词,以方便执行。

# 显示当前shell进程所有可用的命令别称
alias

范例:

alias ho='hostname'
# ho是别名
# hostname是命令
# 扫描新加的磁盘
alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"
删除别名
ualias  [别名]

注意:在命令行中定义别名,仅对当前shell进程有效。

如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc

编辑配置给出的新配置不会立即生效,bash需要重新读取配置文件。

source /etc/bashrc
suorce .bashrc

别名与原始命令重复的话,别名优先级高,想使用原始命令的话,加上单引号。‘cd’

常见硬件信息命令

查看CPU

lscpu命令可以查看CPU信息

cat /proc/cpuinfo 也可以查看到

[20:20:49 root@yyc ~]#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(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
Stepping:              5
CPU MHz:               2499.990
BogoMIPS:              4999.98
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
L3 cache:              36608K
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 rep_good nopl eagerfpu 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 invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni

[20:21:40 root@yyc ~]#cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 85
model name	: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
stepping	: 5
microcode	: 0x1
cpu MHz		: 2499.990
cache size	: 36608 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
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 rep_good nopl eagerfpu 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 invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni
bogomips	: 4999.98
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 85
model name	: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
stepping	: 5
microcode	: 0x1
cpu MHz		: 2499.990
cache size	: 36608 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
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 rep_good nopl eagerfpu 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 invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni
bogomips	: 4999.98
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:
查看内存

free 查看内存状态

[20:37:32 root@yyc ~]#free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        206M        2.2G        556K        1.3G        3.2G
Swap:            0B          0B          0B

[20:39:31 root@yyc ~]#cat /proc/meminfo
MemTotal:        3880176 kB
MemFree:         2324484 kB
MemAvailable:    3403876 kB
Buffers:          102652 kB
Cached:          1136100 kB
SwapCached:            0 kB
Active:           698468 kB
Inactive:         644276 kB
Active(anon):     112940 kB
Inactive(anon):      268 kB
Active(file):     585528 kB
Inactive(file):   644008 kB
Unevictable:       10356 kB
Mlocked:           10356 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               104 kB
Writeback:             0 kB
AnonPages:        114160 kB
Mapped:            51968 kB
Shmem:               556 kB
Slab:             122900 kB
SReclaimable:     109036 kB
SUnreclaim:        13864 kB
KernelStack:        2448 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1940088 kB
Committed_AS:     818732 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       12832 kB
VmallocChunk:   34359720444 kB
Percpu:              328 kB
HardwareCorrupted:     0 kB
AnonHugePages:     28672 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67448 kB
DirectMap2M:     3078144 kB
DirectMap1G:     3145728 kB
查看硬盘和分区情况
[20:39:38 root@yyc ~]#lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 159.1M  0 rom  
vda    253:0    0    60G  0 disk 
└─vda1 253:1    0    60G  0 part /

[20:40:57 root@yyc ~]#cat /proc/partitions 
major minor  #blocks  name

 253        0   62914560 vda
 253        1   62913519 vda1
  11        0     162906 sr0

常见系统信息命令

# 查看系统架构
[21:02:18 root@yyc ~]#arch
x86_64

# 查看发行版本
[21:01:02 root@yyc ~]#cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[21:13:18 root@yyc ~]#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

# ubuntu 查询系统发行版本
root@ubuntu:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 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

# 查看内核版本
[21:02:14 root@yyc ~]#uname -r
3.10.0-1160.45.1.el7.x86_64
root@ubuntu:~# arch 
x86_64

日期和时间

Linux的两种时钟

  • 系统时钟:由Linux内核通过CPU的工作频率进行的
  • 硬件时钟:主板

相关命令

date 显示和设置系统时间

范例:

[root@localhost ~]#date
2022年 04月 14日 星期四 20:05:21 CST

clock,hwclock:显示硬件时钟

[root@localhost ~]#clock
2022年04月14日 星期四 20时05分47秒  -0.399473 秒

root@yyc:~# hwclock 
2022-04-14 20:06:10.798917+08:00
-s #以硬件时钟为准,效正系统时间
-w #以系统时钟为准,效正硬件时间
时区

timedatectl 默认查看时区

[root@localhost ~]#timedatectl 
      Local time: 四 2022-04-14 20:10:43 CST
  Universal time: 四 2022-04-14 12:10:43 UTC
        RTC time: 四 2022-04-14 12:10:43
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
      
# 修改时区 
[root@VM-20-12-centos ~]# timedatectl set-timezone Asia/Shanghai
[root@VM-20-12-centos ~]# ll /etc/localtime 
lrwxrwxrwx. 1 root root 35 Mar  7  2019 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

关机和重启

关机命令

  • init 0
  • poweroff

重启命令

  • init6
  • reboot

用户登录信息查看命令

  • whoami:显示当前登录的用户
  • who:系统当前的所有登录会话
  • w:系统当前所有的登录会话及所做的操作
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值