Linux

在学习Nginx之前,我们先简单过一下Linux。虽然还没有系统地学习过Linux,但是之前的学习中或多或少接触过也对Linux的基本使用有一定了解,这里简单做个笔记。

W3C教程

菜鸟教程

C语言中文网教程

linux基础与shell编程

Linux概述

学习Linux之前我们先了解一下Unix:

Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织(The Open Group)所拥有。UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。

Linux概述:

Linux是基于Unix的。Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。

诞生于1991 年10 月5 日,由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成。

Linux历史:

Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds由于自己不满意教学中使用的MINIX操作系统, 所以在1990年底由于个人爱好设计出了LINUX系统核心。后来发布于芬兰最大的ftp服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来,之后Linux在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统。

Linux系统应用:

  • 服务器系统:Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等
  • 嵌入式系统:路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器
  • 桌面应用系统
  • 移动手持系统

高性能运算、计算密集型应用Linux有强大的运算能力

Linux的版本分为两种:内核版本发行版本

  • 内核版本是指在Linus领导下的内核小组开发维护的系统内核的版本号
  • 发行版本则是内核版本的基础上添加了一些工具软件的基础上构成的一套庞大复杂的操作系统。虽然内核都是一样的,但添加部分各不相同,这就构成了不同的发行版本

Linux的主流发行版本:

Linux主流发行版本

Linux安装和远程连接

虚拟机:一台虚拟的电脑

常用虚拟机软件:

  • VmWare(收费)
  • VirtualBox(免费)

安装Linux可以选择双系统,或者买一台电脑安装Linux系统。这里我们选择使用虚拟机软件VmWare来安装Linux(这里我们以CentOs作为学习)。

linux的远程连接可以使用xshell,也可以使用finalshell

关于Linux安装和远程连接网上相关教程有很多了,这里就先不说了

Linux目录结构

Linux 系统目录结构

linux目录结构

  • root管理员的home目录root
  • 其他用户的home目录home目录中

Linux常用命令

Linux命令大全(修改版)可在本地查看。

Linux常用命令可在各大教程网站查询

菜鸟教程:Linux 命令大全

C语言中文网:

补充:

  • cd -:回到上一级目录

  • tar命令:

    ​ tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件(.tar后缀),但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件(xxx.tar),再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。常用参数:

    • -c:创建一个新tar文件
    • -v:显示运行过程的信息
    • -f:指定文件名
    • -z:调用gzip压缩命令进行压缩
    • -t:查看压缩文件的内容
    • -x:解开tar文件
    • -C 目录: 指定解打包位置

    打包:tar –cvf xxx.tar ./*

    打包并且压缩:tar –zcvf xxx.tar.gz ./*

    解压:

    • tar –xvf xxx.tar
    • tar -zxvf xxx.tar.gz -C /usr/aaa
  • find命令:

    find指令用于查找符合条件的文件

    示例:

    • find / -name “ins*”:查找文件名称是以ins开头的文件
    • find / -name “ins*” –ls
    • find / –user itcast –ls:查找用户itcast的文件
    • find / –user itcast –type d –ls:查找用户itcast的目录
    • find /-perm -777 –type d-ls:查找权限是777的文件
  • grep命令:

    grep命令用于查找文件里符合条件的字符串

    用法: grep [选项]… PATTERN [FILE]…

    示例:

    • grep lang anaconda-ks.cfg:在文件中查找lang
    • grep lang anaconda-ks.cfg –color:高亮显示

Vi和Vim编辑器

菜鸟教程:Linux vi/vim

C语言中文网:Vim文本编辑器及其应用详解

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站自己也说 vim 是一个程序开发工具而不是文字处理软件。

vim 键盘图:

(Vim命令合集可在本地查看)

在Linux下一般使用vi/vim编辑器来编辑文件。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

  • 命令模式:用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。以下是常用的几个命令:
    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

  • 输入模式:在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:

    • 字符按键以及Shift组合:输入字符
    • ENTER:回车键,换行
    • BACK SPACE:退格键,删除光标前一个字符
    • DEL:删除键,删除光标后一个字符
    • 方向键:在文本中移动光标
    • HOME/END:移动光标到行首/行尾
    • Page Up/Page Down:上/下翻页
    • Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC:退出输入模式,切换到命令模式
  • 底线命令模式在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序(加!表示强制退出)
    • w 保存文件

按ESC键可随时退出底线命令模式

vi/vim的工作模式可表示为:

vi/vim工作模式

重定向输出>和>>

视频讲解

  • 重定向输出,覆盖原有内容
  • 重定向输出,又追加功能

示例:

  • cat /etc/passwd > a.txt : 将输出定向到a.txt中(实例:ifconfig > ifconfig.txt)
  • cat /etc/passwd >> a.txt:输出并且追加

系统管理命令

Linux系统管理(进程管理、工作管理和系统定时任务)

ps 正在运行的某个进程的状态

  • ps –ef 查看所有进程
  • ps –ef | grep ssh 查找某一进程
  • kill 2868 杀掉2868编号的进程
  • kill -9 2868 强制杀死2868编号的进程

视频讲解

管道

Linux Shell管道详解

管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。示例:

  • ls --help | more 分页查询帮助信息
  • ps –ef | grep java 查询名称中包含java的进程

Linux权限命令

Linux权限管理详解

菜鸟教程:Linux 文件基本属性

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

1
2
3
4
5
6
7
8
9
10
[root@node1 ~]# ll
总用量 1025316
-rw-------. 1 root root 1243 3月 23 2020 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 12 4月 15 2020 hadoop -> hadoop-2.7.3
drwxr-xr-x. 11 root root 172 4月 15 2020 hadoop-2.7.3
-rw-r--r--. 1 root root 214092195 4月 15 2020 hadoop-2.7.3.tar.gz
lrwxrwxrwx. 1 root root 13 4月 15 2020 jdk -> jdk1.8.0_171/
drwxr-xr-x. 8 10 143 255 3月 29 2018 jdk1.8.0_171
-rw-r--r--. 1 root root 190890122 4月 15 2020 jdk-8u171-linux-x64.tar.gz
-rw-r--r--. 1 root root 644930593 3月 24 2020 mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

实例中,hadoop-2.7.3 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等:

  • 当为 d 则是目录
  • 当为 - 则是文件
  • 若是 l 则表示为链接文档(link file)
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

  • r:对文件是指可读取内容 对目录是可以ls
  • w:对文件是指可修改文件内容,对目录 是指可以在其中创建或删除子节点(目录或文件)
  • x:对文件是指是否可以运行这个文件,对目录是指是否可以cd进入这个目录

每个文件的属性由左边第一部分的 10 个字符来确定:

文件权限

Linux文件属主和属组

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者(属主)文件所有者同组用户(属组)其他用户来规定了不同的文件访问权限。

在以上实例中(drwxr-xr-x. 11 root root 172 4月 15 2020 hadoop-2.7.3),hadoop-2.7.3文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

对于 root 用户来说,一般情况下,文件的权限对其不起作用。

更改文件属性

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

更多参考内容:

chgrp:更改文件属组

语法:

1
chgrp [-R] 属组名 文件名

参数选项:

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

chown:更改文件属主,也可以同时更改文件属组

语法:

1
2
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

参数选项:

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

例子:进入 /root 目录(~)将install.log的拥有者改为bin这个账号:chown bin install.log

chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

数字类型改变文件权限

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770

变更权限的指令 chmod 的语法是这样的:

1
chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:chmod 777 .bashrc

符号类型改变文件权限

还有一个改变权限的方法。从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

那么我们就可以使用 u, g, o 来代表三种身份的权限。

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod u g o a +(加入) -(除去) =(设定) r w x 文件或目录

如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定。比如说我们要修改test1的权限:chmod u=rwx,g=rx,o=r test1

如果要去掉全部人的可执行权限(x):chmod a-x test1

Linux网络操作

linux基础(六)----linux命令系统学习----网络操作命令

Linux必学的网络操作命令

主机名配置

  • hostname:查看主机名
  • hostname xxx:修改主机名 重启后无效
    • 如果想要永久生效,可以修改/etc/sysconfig/network文件

IP地址配置

  • ifconfig:查看(修改)ip地址(重启后无效)
  • ifconfig eth0 192.168.12.22:修改ip地址为192.168.12.22

如果想要永久生效,需要修改 /etc/sysconfig/network-scripts/ifcfg-eth0文件:

1
2
3
4
5
6
7
8
DEVICE=eth0 #网卡名称
BOOTPROTO=static #获取ip的方式(static/dhcp/bootp/none)
HWADDR=00:0C:29:B5:B2:69 #MAC地址
IPADDR=192.168.177.129 #IP地址
NETMASK=255.255.255.0 #子网掩码
NETWORK=192.168.177.0 #网络地址
BROADCAST=192.168.0.255 #广播地址
NBOOT=yes #  系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备。

域名映射

/etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用,相当于windows系统的C:\Windows\System32\drivers\etc\hosts文件的功能

网络服务管理

常用命令:

  • service network status:查看指定服务的状态
  • service network stop:停止指定服务
  • service network start:启动指定服务
  • service network restart:重启指定服务
  • service --status–all:查看系统中所有后台服务
  • netstat –nltp:查看系统中网络进程的端口监听情况

防火墙设置

防火墙根据配置文件/etc/sysconfig/iptables来控制本机的”出”、”入”网络访问行为

  • service iptables status:查看防火墙状态
  • service iptables stop:关闭防火墙
  • service iptables start:启动防火墙
  • chkconfig iptables off:禁止防火墙自启