首页 > 系统服务 > 详细

Linux系统介绍

时间:2020-12-07 23:08:29      阅读:39      评论:0      收藏:0      [点我收藏+]

Linux系统介绍

Linux介绍

  • Unix一开始是开源的,后来被AT&T收回版权
  • Linus Torvalds在1991年针对386(个人计算机)开发
  • Unix和Linux代码是由90%的C语言和10%的汇编组成
  • Linux的吉祥物是企鹅
  • Linux是一个内核,而不是操作系统
  • Linux核心理念:万物皆目录

Linux优缺点

  • 安全、稳定、花费少
  • 多任务、多用户
  • 消耗资源少
  • 内核小,支持多种电子产品
  • 部分软件不支持Linux
  • 对用户使用不是太友好

Linux内核版本介绍

[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64

格式:主版本.次版本.释放版本-修改版本
次版本:如果是偶数,则为稳定版本,如果是奇数,则为开发版本,内核开发人员使用
释放版本:为对次版本的改动,即加入一些功能
修改版本:编译次数,每编译一次+1

Linux历史

20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机
1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了
1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
1979年,Unix发布System V,用于个人计算机
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学
1984年,Stallman开始GNU(GNU‘s Not Unix)项目,创办FSF(Free Software Foundation)基金会
1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明 1988年,MIT为了开发GUI,成立了XFree86的组织
1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核
1994年,Torvalds发布Linux-v1.0
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅

开源共享精神

用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高
开源软件重要特性:低风险;高品质;低成本;更透明
如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。

GNU GPL

  • GNU General Public License,GNU通用公共许可证
  • 四大特点:复制自由,传播自由,收费自由,修改自由

BSD

  • Berkeley Software Distribution,伯克利软件发布版
  • 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议
  • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议
  • 不允许用原始软件的名字、作者名字或机构名称进行市场推广

Apache许可证版本

  • 该软件及其衍生品必须继续使用Apache许可协议
  • 如果修改了程序源代码,需要在文档中进行声明
  • 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息
  • 如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议

MPL

  • Mozilla Public License,Mozilla公共许可
  • 相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。

MIT

  • Massachusetts Institute of Technology License
  • 目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。

常见的Linux系统版本

  • 红帽企业系统(RedHatEnterpriseLinux,RHEL.)
  • 社区企业操作系统(Community Enterprise Operating System,CentOS)
  • Fedora:“试验田”
  • openSUSE:德货
  • Gentoo:高度自定制
  • Debian:硬件架构支持优秀
  • Ubuntu:派生Debian,兼容能力超强
  • Archlinux:小而美,高度自定义
  • Deepin:国产桌面级系统

CentOS7安装

vmware
CentOS7镜像

初识shell

shell是系统的用户界面 ,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。(可以理解为用户与内核之间的翻译官角色)技术分享图片
使用shell的两种方式:

  • 输入命令 效率低,适合少量的工作
  • shell script 效率高,适合完成复杂,重复性工作

shell 语法

[root@ser2 ~]# ls -a /home/
			 #命令 选项 参数

命令:整条shell命令的主体
选项:会影响会微调命令的行为,通常以-或者--开头
参数:命令作用的对象(长参数、短参数)

bash基本特性

自动补全

在bash中可以使用tab键对正在输入的命令进行自动补全,默认的补全包并不齐全,可以使用yum包管理工具安装bash-complation进行补全

[root@ser2 ~]# yum install -y bash-completion

快捷键(Ctrl+)

技术分享图片

历史命令

[root@ser2 ~]# history 

History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 ,用户登录/退出时会将缓存区读取/保存至~/.bash_history
参数:
‐ a: 追加本次会话执行的命令历史列表至历史文件中
‐ d: 删除历史中指定的命令
‐ c: 清空历史命令
操作:

  1. Ctrl+R
    搜索历史命令(输入一段某条命令的关键字:必须是连续的)
  2. !22
    执行历史命令中第220条命令
  3. !字符串
    搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
  4. !\( 引用上一个命令的最后一个参数 ,当上一个命令没有参数的时候,!\)代表的是上一个命令本

命名别名

[root@SER2 ~]# alias wl=‘cat /etc/sysconfig/network-scripts/ifcfg-ens33‘
# 建立别名(临时的,仅在当前shell生效)
[root@SER2 ~]# wl
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1864a917-1e72-452d-a4c8-0c0d7e6757b0"
DEVICE="ens33"
ONBOOT="yes"
[root@SER2 ~]# unalias wl
# 取消wl这个别名
[root@SER2 ~]# alias # 查看系统当前的别名
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --showtilde‘
[root@SER2 ~]# type -a ls # 查看命令类型
ls 是 `ls --color=auto‘ 的别名
ls 是 /usr/bin/ls
[root@SER2 ~]# /bin/ls
anaconda-ks.cfg home
[root@SER2 ~]# ls # 别名优先
anaconda-ks.cfg home
[root@SER2 ~]# \ls # 跳过别名
anaconda-ks.cfg home

永久别名

[root@localhost ~]# vim /root/.bashrc # 用户别名
[root@localhost ~]# vim /etc/bashrc # 系统别名

Linux获取帮助

参数--help

[root@SER2 ~]# ls --help
# 用法:ls [选项] ... [文件] ...

man手册

中文man手册

yum -y install man-pages-zh-CN.noarch

文件类型

通过颜色判断文件的类型是不一定正确的
Linux系统中文件是没有扩展名的!!!!

方法一:ls

ls -l 文件名 #看第一个字符
- 普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 块设备文件(块设备)存储设备硬盘,U盘 /dev/sda,/dev/sda1
c 字符设备文件(字符设备)打印机,终端 /dev/tty1,/dev/zero
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
[root@SER2 ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg
/dev/log /run/dmeventd-client
# 第一行的第一个字母是标识文件的类型,文件类型一共有七类
-rwxr-xr-x. 1 root root 117680 10月 31 2018 /bin/ls
srw-rw-rw-. 1 root root 0 8月 25 11:03 /dev/log
brw-rw----. 1 root disk 8, 0 8月 25 11:03 /dev/sda
crw--w----. 1 root tty 4, 1 8月 25 11:03 /dev/tty1
lrwxrwxrwx. 1 root root 22 8月 22 11:10 /etc/grub2.cfg ->
../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 6月 7 2013 /etc/hosts
drwxr-xr-x. 3 root root 20 8月 25 11:03 /home
prw-------. 1 root root 0 8月 25 11:03 /run/dmeventd-client

方法二:file

[root@SER2 ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@SER2 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
[root@SER2 ~]# file /dev/sda
/dev/sda: block special
[root@SER2 ~]# file /dev/tty1
/dev/tty1: character special
[root@SER2 ~]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg‘
[root@SER2 ~]# file /home
/home: directory
[root@SER2 ~]# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)

方法三:stat

[root@localhost ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1244      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33574991    硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2020-11-28 14:03:21.043099567 +0800
最近更改:2020-11-28 14:03:21.043099567 +0800
最近改动:2020-11-28 14:03:21.043099567 +0800
创建时间:-

文件查找

which

which指令会在环境变量$PATH 设置的目录里查找符合条件的文件。

[root@localhost ~]# which poweroff
/usr/sbin/poweroff

locate

locate 要搜索的文件或目录名,非实时的从数据库里快速搜索文件或目录。

[root@localhost ~]# yum -y install mlocate # 安装locate
[root@localhost ~]# updatedb # 更新数据库
[root@localhost ~]# locate hosts # 查找hosts文件名的文件
[root@localhost ~]# locate /etc/sh # 查找/etc目录下所有以sh开头的文件

默认情况下,locate数据库中会忽略某些文件夹,可以在配置文件中修改

[root@localhost ~]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda
configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2
gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs
proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs
udf usbfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn .bzr .arch-ids {arch} CVS"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache
/var/lib/yum/yumdb /var/lib/dnf/yumdb /var/spool/cups /var/spool/squid /var/tmp
/var/lib/ceph"

find

  • 实时查找工具,通过遍历指定路径下的文件系统完成文件查找
  • 工作特点
    • 查找速度略慢
    • 精确查找
    • 实时查找
    • 可以满足多种条件匹配
find [选项] [路径] [查找条件 + 处理动作]
查找路径:指定具体目录路径,默认是当前文件夹
查找条件:指定的查找标准(文件名/大小/类型/权限等),默认是找出所有文件
处理动作:对符合条件的文件做什么操作,默认输出屏幕

文件管理

与Windows的多根目录不同,Linux以单根的方式组织文件,采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在此目录下再创建其它的目录。在linux世界里,一切皆文件。

目录结构

技术分享图片

技术分享图片

技术分享图片

文件路径

绝对路径:从/开始的路径 /home/aaron/file1
相对路径:从当前路径开始 a.txt ./a.txt ../a.txt

[root@SER2 /]# useradd aaron
[root@SER2 /]# touch /home/aaron/file1 # 绝对路径
[root@SER2 /]# touch ~/file2
[root@SER2 /]# touch ~aaron/file3
[root@SER2 123]# pwd
[root@SER2 123]# mkdir abc # 相对路径
[root@SER2 123]# touch ../file3
[root@SER2 123]# touch file4
[root@SER2 123]# touch abc/file5
[root@SER2 123]# cd /home/aaron/ # 绝对路径
[root@SER2 aaron]# cd ~aaron/
[root@SER2 aaron]# cd ../../root # 相对路径
[root@SER2 ~]# cd - # 返回上次目录
/home/aaron
[root@SER2 aaron]# cd ~ # 直接回家目录
[root@SER2 aaron]# cd # 直接回家目录

常用命令

创建

文件:touch

touch命令:可以创建文件,也可更改文件时间
Update the access and modification times of each FILE to the current time.

  • 命令参数:
    -a :只更改atime
    -m : 只更改mtime
    -t :指定更改时间的格式
[root@SER2 ~]# touch file1.txt # 无则创建,有则修改时间
[root@SER2 ~]# touch file3 file4
[root@SER2 ~]# touch /home/file10.txt
[root@SER2 ~]# touch /home/{maomao,gougou}
[root@SER2 ~]# touch file{1..20}
[root@SER2 ~]# touch file{a..c}
[root@SER2 ~]# touch file{old,new} # {}集合,等价touch fileold filenew

目录:mkdir

[root@SER2 ~]# mkdir dir1
[root@SER2 ~]# mkdir /home/dir2 /home/dir3
[root@SER2 ~]# mkdir /home/{dir4,dir5}
[root@SER2 ~]# mkdir -v /home/{dir6,dir7} # 显示操作的消息
[root@SER2 ~]# mkdir -v /home/dir8/111/22
[root@SER2 ~]# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
[root@SER2 ~]# mkdir -pv /home/{abc/{dir1,111},efg}

复制

cp命令: 复制文件
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...

  • 常见选项参数:
    -i : 交互式
    -r /-R : 递归复制目录和文件
    -a : 归档,文件相关属性
    -p : 连同属性复制
  • SRC为单个文件:
    DEST不存在,将SRC文件内容写入DEST文件中
    DEST存在,将SRC文件覆盖DEST文件中
    如果DEST是目录:创建新文件并写入内容
  • SRC为多个文件:
    DEST必须为目录 SRC为目录: 使用选项‐r DEST为目录:
    DEST不存在:创建同名目录和一致性文件
    DEST存在:一致性文件 DEST为文件:报错
[root@SER2 ~]# mkdir /home/dir{1,2}
[root@SER2 ~]# touch install.log
[root@SER2 ~]# cp -v install.log /home/dir1
[root@SER2 ~]# cp -v install.log /home/dir1/abc.txt
[root@SER2 ~]# cp -rv /etc /home/dir1
[root@SER2 ~]# cp -v install.log /home/dir88 # 没有/home/dir88
[root@SER2 ~]# cp -v install.log /home/dir2
[root@SER2 ~]# cp -v anaconda-ks.cfg !$
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname /home/dir2
# 将多个文件复制到同一个目录
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname .
[root@SER2 ~]# type -a cp
cp 是 `cp -i‘ 的别名
cp 是 /usr/bin/cp
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33/etc/sysconfig/network-scripts/ifcfg-ens33.bak
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfgens33.bak}
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33{,-old}

移动

mv命令: 移动文件
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
注意事项类比cp命令

  • 常用参数:
    -i : 交互式
    -f : 强制性
[root@SER2 ~]# mv file1 /home/dir3 # 将file1移动到/home/dir3
[root@SER2 ~]# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且改名file20
[root@SER2 ~]# mv file4 file5 # 将file4改名为file5

删除

  • 常用选项:
    -i : 交互式
    -r : 递归
    -f : 强制
[root@SER2 ~]# cd /home
[root@SER2 home]# rm -rf dir1
[root@SER2 ~]# mkdir /home/dir10
[root@SER2 ~]# touch /home/dir10/{file2,file3,.file4}
[root@SER2 ~]# rm -rf /home/dir10/*
[root@SER2 ~]# ls /home/dir10/ -a # 隐藏文件没有被删除
. .. .file4
[root@SER2 ~]# rm -rf file*
[root@SER2 ~]# rm -rf *.pdf

查看

cat tac less more head tail tailf grep ....

/bin/date
/etc/hostname
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/passwd
/etc/shadow
/etc/group
/etc/grub2.cfg
/etc/resolv.conf
/etc/profile # 设置系统环境变量
/etc/bashrc # 影响bash shell环境
/var/log/messages # 系统主日志文件
/var/log/secure # 跟安全相关的日志如ssh登录,本地登录......
/proc/cpuinfo # 查看CPU信息:核心数...
  • cat命令:查看文件内容
    -n 显示行号
    -A 包括控制字符(换行符/制表符)
  • tac命令:查看文件内容(从尾部开始)
  • more命令: 查看部分文件内容
  • less命令: 查看部分文件内容
  • head命令: 查看部分文件内容(默认查看文件前10行内容)
    -c : 获取前n个字节
    -n :获取前n行内容
  • tail命令: 查看部分文件内容(默认查看文件后10行内容)
    -c :获取后n个字节
    -n :获取后n行内容
    -f : 与tailf命令功能相似
  • tailf命令:实时追踪文件尾部内容
  • stat命令:查看文件的元数据信息
    ps:文件 = 元数据 (metadata )+ 用户数据(data)

Linux系统介绍

原文:https://www.cnblogs.com/Bennyzion/p/14099936.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!