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/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系统概述及常用命令相关推荐
- linux文本处理常用命令
linux文本处理常用命令 linux文本处理命令:grep.sed.printf.awk 1.grep grep的作用是按行查找字符,输出包含字符的行. #从文件查询 grep 'hello' fi ...
- linux命令实验设备,实验二 Linux系统的常用命令
实验二Linux系统的常用命令 一.实验目的 1.X-windows的简单配置,掌握进入命令行模式和图形化模式的方法2.GNOME桌面的使用,包括注销与登录,系统信息的查看,GNOME下软件的使用3. ...
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
- Apache RocketMQ在linux上的常用命令
Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录 1.启动Name Server 2.启动Broker 3.关闭Name Server 4 ...
- Linux 查看目录常用命令
linux 查看目录常用命令 ls -F |grep "/$" 只显示当前目录下的文件夹 ls -al |grep "^-" 只显示当前目录下的文件 ls -a ...
- Linux oracle(常用命令)启动、停止、监听
Linux oracle(常用命令)启动.停止.监听 1.手动启动 dbstart /u01/app/oracle/product/11.2.0/dbhome_1 (ORACLE_HOME) 2.停止 ...
- Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...
Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...
- linux查询配置基础命令,Linux查看系统配置常用命令
Linux查看系统配置常用命令 系统 # uname -a 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue 查看操作系统版本 # cat /proc/cpuinfo 查看 ...
- Ubuntu学习日记--Lesson1:Linux基础和常用命令
版权生命:文章系原创,转载请注明出处,多谢! 为了在Linux系统下用深度学习框架caffe,系统补习了一下Linux操作的知识,做些笔记,以备复习,或随时查看. Lesson1:Linux基础和常用 ...
最新文章
- 【书签】格式化nginx.conf文件的工具
- 将ejs转为html,Node.js Express Web应用框架ejs修改为html
- boost::spirit模块实现自定义karma计数器的测试程序
- c++项目源码_C/C++学习日记:用C++制作餐饮管理系统(附源码),可以用来做毕设的项目!...
- ADT17中引入外部JAR包时出现ClassNotFoundException
- HDU-不容易系列之(3)—— LELE的RPG难题
- 信息学奥赛一本通C++语言——1055:判断闰年
- 使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
- 【程序猿脱单指南】送你一份大礼包去追女神
- python 解析json typeerror_TypeError:在使用Python解析JSON时,字符串索引必须是整数?...
- hprof文件分析工具_应用稳定性优化系列(三),资源泄露问题分析及定位
- 【node】-----简单介绍 nodejs
- 学习笔记 卷积网络-dropout
- Windows API一日一练(69)GetTickCount函数
- 在VC2015里包含了lib库,但没有设置对路径的出错
- myeclipse配置多个domain的方法
- 【数据中心管理】之磁盘阵列以及 RAID技术详解
- 物联网大赛“千里挑一”,华为、上海交大共铸人才引擎
- 虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
- 关于测试,我发现了哪些新大陆
热门文章
- 在线接口Mock工具fastmock详解
- 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】
- eclipse 反编译插件安装
- IBM继续统领超级计算 Opteron发展迅速
- 微信小程序制作简单的商品列表页,实现价格求和
- 便利贴--41{js - base64 - _utf8_ 的编码和解码}
- python 循序渐进学习:输出线段图案、正方形图案、直角三角形图案、翻转直角三角形图案、带空格直角三角形图案
- 空心三角形图案-c++
- 《Redis设计与实现》学习笔记
- 串口通信--两台PC机之间的简单传输