系统概述


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/versionLinux 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 -aLinux 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.gztouch 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 javaps -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 8088netstat -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

Linux系统概述及常用命令相关推荐

  1. linux文本处理常用命令

    linux文本处理常用命令 linux文本处理命令:grep.sed.printf.awk 1.grep grep的作用是按行查找字符,输出包含字符的行. #从文件查询 grep 'hello' fi ...

  2. linux命令实验设备,实验二 Linux系统的常用命令

    实验二Linux系统的常用命令 一.实验目的 1.X-windows的简单配置,掌握进入命令行模式和图形化模式的方法2.GNOME桌面的使用,包括注销与登录,系统信息的查看,GNOME下软件的使用3. ...

  3. Linux学习之CentOS(二)--初识linux的一些常用命令

    Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...

  4. Apache RocketMQ在linux上的常用命令

    Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录  1.启动Name Server  2.启动Broker 3.关闭Name Server 4 ...

  5. Linux 查看目录常用命令

    linux 查看目录常用命令 ls -F |grep "/$" 只显示当前目录下的文件夹 ls -al |grep "^-" 只显示当前目录下的文件 ls -a ...

  6. Linux oracle(常用命令)启动、停止、监听

    Linux oracle(常用命令)启动.停止.监听 1.手动启动 dbstart /u01/app/oracle/product/11.2.0/dbhome_1 (ORACLE_HOME) 2.停止 ...

  7. Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...

  8. linux查询配置基础命令,Linux查看系统配置常用命令

    Linux查看系统配置常用命令 系统 # uname -a 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue 查看操作系统版本 # cat /proc/cpuinfo 查看 ...

  9. Ubuntu学习日记--Lesson1:Linux基础和常用命令

    版权生命:文章系原创,转载请注明出处,多谢! 为了在Linux系统下用深度学习框架caffe,系统补习了一下Linux操作的知识,做些笔记,以备复习,或随时查看. Lesson1:Linux基础和常用 ...

最新文章

  1. 【书签】格式化nginx.conf文件的工具
  2. 将ejs转为html,Node.js Express Web应用框架ejs修改为html
  3. boost::spirit模块实现自定义karma计数器的测试程序
  4. c++项目源码_C/C++学习日记:用C++制作餐饮管理系统(附源码),可以用来做毕设的项目!...
  5. ADT17中引入外部JAR包时出现ClassNotFoundException
  6. HDU-不容易系列之(3)—— LELE的RPG难题
  7. 信息学奥赛一本通C++语言——1055:判断闰年
  8. 使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
  9. 【程序猿脱单指南】送你一份大礼包去追女神
  10. python 解析json typeerror_TypeError:在使用Python解析JSON时,字符串索引必须是整数?...
  11. hprof文件分析工具_应用稳定性优化系列(三),资源泄露问题分析及定位
  12. 【node】-----简单介绍 nodejs
  13. 学习笔记 卷积网络-dropout
  14. Windows API一日一练(69)GetTickCount函数
  15. 在VC2015里包含了lib库,但没有设置对路径的出错
  16. myeclipse配置多个domain的方法
  17. 【数据中心管理】之磁盘阵列以及 RAID技术详解
  18. 物联网大赛“千里挑一”,华为、上海交大共铸人才引擎
  19. 虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
  20. 关于测试,我发现了哪些新大陆

热门文章

  1. 在线接口Mock工具fastmock详解
  2. 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】
  3. eclipse 反编译插件安装
  4. IBM继续统领超级计算 Opteron发展迅速
  5. 微信小程序制作简单的商品列表页,实现价格求和
  6. 便利贴--41{js - base64 - _utf8_ 的编码和解码}
  7. python 循序渐进学习:输出线段图案、正方形图案、直角三角形图案、翻转直角三角形图案、带空格直角三角形图案
  8. 空心三角形图案-c++
  9. 《Redis设计与实现》学习笔记
  10. 串口通信--两台PC机之间的简单传输