Linux系统概述及常用命令

系统概述

在这里插入图片描述
在这里插入图片描述

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。

在这里插入图片描述

Linus Torvalds ,Linux之父,他根据Minix系统的代码,参照UNIX系统的设计,写出了第一个Linux内核。1991年10月5日首次发布。

源码 https://github.com/torvalds/linux

背景

  • 选择少,不开放
    20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和macOS这几种。
    Unix价格昂贵,不能运行于PC;
    DOS显得简陋,且源代码被软件厂商严格保密;
    MacOS是一种专门用于苹果计算机的操作系统。

  • MINIX学界流行
    此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX。发布在Internet上,免费给全世界的学生使用。

  • Linux诞生
    MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。

发行版本

Linux有非常多的发行版本,从性质上划分,大体分为两种:

  • 商业版——商业公司维护
    以Redhat为代表

  • 社区版——免费发行+开源社区维护
    Debian: 创造一份自由操作系统;
    Ubuntu: 基于 Debian, 界面友好;
    CentOS: 从RHEL源代码编译的社区重新发布版本,和红帽完全兼容。

内核模块

在这里插入图片描述

a)系统调用接口(SCI):open、read、write等系统调用
b)进程管理(PM):创建进程、删除进程、调度进程等
c)内存管理(MM):内存分配、管理等
d)虚拟文件系统(VFS):为多种文件系统提供统一的操作接口
e)网络协议栈:提供各种网络协议
f)CPU架构相关代码(Arch):为的是提高至移植性
g)设备驱动程序(DD):各种设备驱动,占到内核的70%左右代码

重要文件目录

/dev 设备目录,Linux 的外部设备
/etc 系统配置及服务配置文件
/proc 显示内核及进程信息的虚拟文件系统
/tmp 临时文件目录,
/home 普通用户主目录
/root 超级管理员主目录
/var 存放运行时需要改变数据的文件,一般是日志文件(/var/log),cache目录。/var/log/messages,/var/log/secure
/usr 用户程序及数据,帮助文件,二进制命令等目录(usr/local/)
/bin 普通用户命令的目录
/sbin 和/usr/sbin/:超级用户命令的目录
/boot 启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

常用命令

在这里插入图片描述

系统信息

Linux 内核版本
[root@VM ~]# cat /proc/version

Linux version 3.10.0-862.3.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Mon May 21 23:36:36 UTC 2018


[root@VM ~]# uname -a

Linux VM 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

版本说明:

第一个组数字:3, 主版本号
第二个组数字:10, 次版本号,当前为稳定版本。偶数表示稳定版本;奇数表示开发中版本。
第三个组数字:0, 错误修补的次数。
第四个组数字:862.3.2,表示发型版本的补丁版本
el7:则表示我正在使用的内核是 RedHat / CentOS 系列发行版专用内核
x86_64:采用的是64位的CPU
SMP:对称多处理机,表示内核支持多核、多处理器
Mon May 21 23:36:36 UTC 2018: 内核的编译时间(build date)为 2018/05/21 23:36:36

系统版本
[root@VM ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

[root@VM ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
CPU信息
[root@VM ~]# cat /proc/cpuinfo
环境变量
[root@VM ~]# env

用户权限

用户与组
命令说明
useradd创建用户
userdel删除用户及配置文件
passwd指定/更改用户密码
groupadd新建用户组
groupdel删除用户组
su切换用户
sudo用root身份执行命令

[root@VM home]# groupadd developer
[root@VM home]# useradd yw
[root@VM home]# passwd yw
[root@VM home]# userdel -r yw
[root@VM home]# groupdel developer
文件权限

在这里插入图片描述

在这里插入图片描述

r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)

r:4 w:2 x:1

1、chgrp:更改文件属组
2、chown:更改文件属主,也可以同时更改文件属组
3、chmod:更改文件9个属性

| 命令 | 用户 | 操作 | 权限 | 文件/目录 |
| ---- |---- |---- |---- |---- |---- |
| chmod | u(用户)
g(组)
o(其他)
a(所有) | +(加入)
-(除去)
=(设定) | r
w
x | 文件或目录|

[root@VM home]# touch a.log
[root@VM home]# chown yuan a.log
[root@VM home]# chgrp -v yuan a.log
[root@VM home]# chmod o+w a.log
[root@VM home]# chmod g+w,o+x,o-w a.log
[root@VM home]# chmod 777 a.log

文件操作

查找
#将当前目录下及其子目录下所有.log后缀的文件列出来
find . -name "*.log"

#将当前目录下及其子目录下5天内更新过的文件列出
find . -ctime -5

#将当前目录下及其子目录下 更改时间在5天以前的文件列出
find . -ctime +5


# 查找小于1500字节的文件
find . -size -1500c

#查找大于512k字节的文件
find . -size +512k

# 查找等于1M字节的文件
find . -size 1M

# 查找大于1G字节的文件
find . -size +1G

# 查找大于10M小于20M的文件
find . -size +10M -size -20M
查看

vim

vi命令是编辑器,但是有个可怕的地方。如果文件很大,好几十G,那么vi一下,则会把所有文件都会加载到内存中。导致服务器瘫痪。
因此查看文件,最好用less,cat,tail命令。

less more cat tac head tail

基本使用

# less 分页查看 过滤ERROR日志
less app.log | grep ERROR

# more 连续两行以上空白行则以一行空白行显示
more -s app.log
# 从第 20 行开始显示
more +20 app.log

# cat 带行号正序查看文件所有内容
cat -n app.log

# tac 带行号倒序查看文件所有内容
tac app.log

# head 显示 app.log 文件的开头 5 行
head -n 5 app.log

# tail 显示 app.log 文件的最后 5 行
tail -n 5 app.log

# tail 跟踪文件的增长情况
tail -f app.log

筛选上下文

# 打印匹配行的前后5行
less app.log | grep -5 'parttern'

# 打印匹配行的前后5行
less app.log | grep -C 5 'parttern'

# 打印匹配行的后5行
less app.log | grep -A 5 'parttern'

# 打印匹配行的前5行
less app.log | grep -B 5 'parttern'

正则匹配

# 不包含 -v
less app.log | grep 'api/resource' |grep -v 'request_in'

# -P 可以让grep使用perl的正则表达式语法,perl的正则更加多元化,能实现更加复杂的场景。
# -o只输出匹配到的地方
less app.log |grep api/resource | grep -Po '("latency":).*?(,")'

# 非捕获匹配
less app.log |grep api/resource |grep -P '(?<="latency":).*?(?=,")'

# 100ms~999ms
less app.log |grep api/resource |grep -P '(?<="latency":)[0-9]{3}(?=,")'

# 1s以上
less app.log |grep api/resource |grep -P '(?<="latency":)\d{4,}(?=,")'

# 10ms以上
less app.log |grep RedisUtil- |grep -P '(?<=cost\=)\d{2,}(?=ms)'
编辑
# 创建

touch a.log

# 删除

rm -rf dirToDel

#  移动(重命名)

mv source dest

# 复制

mv source dest
压缩解压
# 压缩 a.c文件为test.tar.gz

touch a.c # tar -czvf test.tar.gz a.c 

# 解压文件
tar -xzvf test.tar.gz



------

# 压缩当前目录下的所有文件

gzip * 

# 解压缩文件
gzip -dv *
gunzip ab.gz

------
# 压缩/home/yw目录下的所有文件
zip -q -r yw.zip /home/yw

# 从压缩文件 yw.zip 中删除文件 a.log
zip -dv yw.zip a.log

# 解压缩文件
unzip yw.zip

系统监控

磁盘使用
# 显示可读格式输出所有信息
df --total -h

# du 显示目录或文件所占空间大小, 1 要显示的层级数
du -h --max-depth=1 /home

内存使用
# 以总和的形式查询内存的使用信息:
free -th

# 每2秒执行一次命令用于周期性查询内存使用情况
free -th -s 2
进程信息
# 显示所有process
ps -aux | grep java

ps -ef | grep java

### 参数说明
-e 等于“-A”
e  显示环境变量
f  显示程序间的关系
u  指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程 
------------------------


# 显示指定用户的process 信息, 显示root用户的进程信息
ps -u root



#更新周期为3秒
top -d 3 

#设置信息更新次数,表示更新5次后终止更新显示
top -n 5

#显示指定的进程信息
top -p 139
端口占用
# lsof(list open files)是一个列出当前系统打开文件的工具
lsof -i:8088

# 用于显示 tcp,udp 的端口和进程等相关情况

netstat -tunlp | grep 8088

netstat -anp |grep 8088

帮助命令

## man
[root@VM ~]# man man
[root@VM ~]# man cd


## help
[root@VM ~]# help help
[root@VM ~]# help cd
1. shell(命令解释器) 自带的命令称为 -- '内部命令',其他的则称为 -- '外部命令'
2. help 和内部命令搭配的时候 -- 'help 内部命令' 例如 'help cd'
3. help 和外部命令搭配的时候 -- '外部命令 --help' 例如 'ls --help'

区分内部外部命令 -- type
type cd 
type ls


## info
info 帮助比help 更加详细,作为help的补充例如'info ls'
info cd 
info ls

拓展延伸

定时任务
# 查看
crontab -l 

# 编辑
crontab -e 
Redis连接
# redis-cli
命令:redis-cli -h ****.redis.xxx.com -p 6379
认证:auth <password>
选DB:select DBNo(0~15)


# telnet
命令:telnet ****.redis.xxx.com 6379
认证:auth <password>
选DB:select DBNo(0~15)
包管理器

以 Debian 项目为基础的发行版:

包括 Ubuntu,deepin 等,使用的是 apt 包管理器,比较适合个人的普通用户,也就是不想在 Linux 的配置上花太多时间的用户。

以 Redhat 项目为基础的发行版:

包括 CentOS,Fedora 等,使用的是 yum 包管理器。由于 Redhat 本身是一个企业级系统,所以他比较适合需要稳定的服务器用户,开发方面的解决方案支持比较完善。

以 Arch Linux 项目为基础的发行版:

主要代表是 Manjaro,它们使用的是 pacman 包管理。软件为滚动式更新,软件策略比较激进,缺乏充分的稳定性。适合喜欢研究 Linux 的人群,主要是计算机系的学生和 Linux 发烧友。

PS

苹果公司的 Mac OS 基于FreeBSD

早期 WINDOWS 系统运行在DOS下

Reference

  • https://www.cnblogs.com/itech/archive/2009/04/10/1433324.html
  • https://www.cnblogs.com/vamei/archive/2012/09/04/2671103.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值