学linux,这篇就够了

目录

  • 一. Linux介绍

    • 1 Linux基本常识

      • 1.1 Linux诞生的故事
      • 1.2 Linux和Unix的关系
      • 1.3 Linux的读音
      • 1.4 Linux的吉祥物
      • 1.5 Linux的主要发行版
      • 1.6 Linux和Windows的比较
    • 2.为啥要学Linux
      • 2.1 Linux运维工程师
      • 2.2 linux嵌入式开发工程师
      • 2.3 项目维护及部署
    • 3.怎么学Linux
  • 二.VMware和Centos的安装
    • 1.Windows,VMware和Centos三者的关系
    • 2.VMware安装
    • 3. Centos安装
      • 1 配置网络连接的三种形式
      • 2.centos界面化基本使用
    • 4.VMtools安装
      • 1 安装步骤:
      • 2 设置共享文件夹
    • 5 创建/使用快照
      • 1.什么是快照
      • 2.创建快照的3种模式
      • 3.如何使用快照
    • 6.克隆
      • 1.什么是克隆
      • 2.创建克隆
  • 三 Linux目录结构(重点)
    • 1.Linux目录与Windows目录对比

      • 1.1 Windows目录结构
      • 1.2 Linux目录结构
    • 2 Linux世界里---一切皆文件
    • 3 Linux目录结构详解
      • 3.1 /bin
      • 3.2 /sbin
      • 3.3 /home
      • 3.4 /root
      • 3.5 /boot
      • 3.6 /lib
      • 3.7 /etc
      • 3.8 /usr
      • 3.9 /proc,别动
      • 3.10 /srv,别动
      • 3.11 /sys,别动
      • 3.12 /tmp
      • 3.13 /dev
      • 3.14 /media
      • 3.15 /mnt
      • 3.16 /opt
      • 3.17 /usr/local
      • 3.18 /var
      • 3.19 /selinux
  • 四 远程登录Linux系统
    • 4.1 为什么要远程登录
    • 4.2 Xshell5安装
    • 4.3 连接登录
      • 4.3.1 连接前提
      • 4.3.2 Xshell连接配置
  • 五 远程上传加载文件
    • 5.1 Xftp安装
    • 5.2 Xftp连接配置
    • 5.3 中文乱码问题解决
  • 六 vi和vim编辑器
    • 6.1 vi 和 vim 的三种常见模式

      • 6.1.1 正常模式
      • 6.1.2 插入模式
      • 6.1.3 命令行模式
    • 6.2 三种模式间的切换
    • 6.3 常用快捷键案例(正常模式)
    • 6.5 常用命令
  • 七 开机/重启/用户切换/注销
    • 7.1 关机/重启命令
    • 7.2 用户切换/注销
      • 7.2.1 基本说明:
      • 7.2.2 切换用户
      • 7.2.3 注销用户
  • 八 用户管理
    • 8.1 知识储备
    • 8.2 添加用户
      • 8.2.1 基本语法
    • 8.3 给用户指定或修改密码
      • 8.3.1 基本语法
    • 8.4 删除用户
      • 8.4.1 基本语法
      • 8.4.2 说明
    • 8.5 查询用户信息
      • 8.5.1 基本语法
    • 8.6 切换用户
      • 8.6.1 说明
      • 8.6.2 基本语法
      • 8.6.3 补充说明
    • 8.7 用户组
      • 8.7.1 说明
      • 8.7.2 增加组
      • 8.7.3 删除组
    • 8.8 修改用户的组
      • 8.8.1 基本指令
    • 8.9 /etc/passwd 文件
    • 8.10 /etc/shadow 文件
    • 8.11 /etc/group 文件
  • 九. 实用指令
    • 9.1 指定运行级别
    • 9.2 修改默认运行级别
    • 9.3 切换运行级别
      • 9.3.1 基本指令
      • 9.3.2 面试题
    • 9.4 帮助指令
    • 9.5 文件目录指令
      • 9.5.1 pwd指令
      • 9.5.2 ls指令
      • 9.5.3 cd指令
      • 9.5.4 mkdir指令
      • 9.5.5 rmdir指令
      • 9.5.6 touch 指令
      • 9.5.7 cp指令
      • 9.5.8 rm指令
      • 9.5.9 mv指令
      • 9.5.10 cat指令
      • 9.5.11 more指令
      • 9.5.12 less指令
      • 9.5.13 >指令/>> 指令
      • 9.5.14 echo指令
      • 9.5.15 head指令
      • 9.5.15 tail指令
      • 9.5.16 ln指令
      • 9.5.17 history指令
    • 9.6 时间日期类
      • 9.6.1 date 指令
      • 9.6.2 cal指令
      • 9.6.3 find指令
      • 9.6.4 grep 指令 和 管道符号 |
    • 9.7 压缩和解压类
      • 9.7.1 gzip/gunzip 指令(只能用于文件压缩)
      • 9.7.2 zip/unzip 指令
      • 9.7.3 tar指令
  • 十 组管理和权限管理
    • 10.1 Linux组基本介绍
    • 10.2 文件/目录 所有者
      • 10.2.1 查看文件的所有者
      • 10.2.2 修改文件所有者
    • 10.3 组的创建
    • 10.4 文件/目录 所在组
      • 10.4.1 查看文件/目录 所在组
      • 10.4.2 修改文件所在组
    • 10.5 其他组
    • 10.6 改变用户所在组
      • 10.6.1 改变用户所在组
    • 10.7 权限基本介绍
    • 10.8 rwx权限详解
      • 10.8.1 rwx作用到文件
      • 10.8.2 rwx作用到目录
    • 10.9 文件及目录权限实际案例
    • 10.10 修改权限
    • 10.11 修改文件所有者
    • 10.12 修改文件所在组
    • 10.13 小案例-警察和土匪游戏
  • 十一 crond任务调度
    • 10.1示意图
    • 10.2 基本语法
    • 10.3 参数细节说明
    • 10.4 案例
  • 十二 Linux 磁盘分区、挂载
    • 12.1 分区基础知识

      • 12.1.1 分区方式
      • 12.1.2 windows下的磁盘分区
    • 12.2Linux分区
      • 12.2.1 原理介绍
      • 12.2.2 硬盘说明
    • 12.3 挂载的经典案例
    • 12.4 磁盘情况查询
      • 12.4.1 查询系统整体磁盘使用情况
      • 12.4.2 查询指定目录的磁盘占用情况
      • 12.4.3 常见案例
  • 十三 网络配置
    • 13.1Linux网络配置原理图(NAT)
    • 13.2 查看网络ip和网关
      • 13.2.1 查看虚拟网络编辑器
      • 13.2.2 修改ip地址(修改虚拟网络的ip)
      • 13.2.3 查看网关
      • 13.2.4 查看windows环境的中 VMnet8
    • 13.3 ping 测试主机之间网络连通
      • 13.3.1 基本语法
      • 13.3.2 小例子
    • 13.4 Linux网络环境配置
      • 13.4.1 第一种方法(自动获取)
      • 13.4.2 第二种方法(指定固定ip)
  • 十四 进程管理
    • 14.1 基本介绍
    • 14.2 显示系统执行的进程
      • 14.2.1 说明
      • 14.2.2 ps指令详解
    • 14.3 终止进程kill和killall
      • 14.3.1 说明
      • 14.3.2 基本语法:
      • 14.3.4 例子
    • 14.4 查看进程树 pstree
    • 14.5 服务(service)管理
      • 14.5.1 说明
      • 14.5.2 基本使用
      • 14.5.3 例子
      • 14.5.4 查看服务名
      • 14.5.5 服务器运行级别(runlevel)
      • 14.5.6 开机流程说明
      • 14.5.7 chkconfig指令
    • 14.6 动态监控进程
      • 14.6.1 说明
      • 14.6.2 基本语法
      • 14.6.3 例子
  • 十五. rpm和yum
    • 15.1 rpm包的管理

      • 15.1.1 介绍
      • 15.1.2 rpm包的简单查询指令
      • 15.1.3 rpm 包名的基本格式
      • 15.1.4 rpm其它指令
      • 15.1.5 卸载rpm包
      • 15.1.6 安装rpm包
    • 15.2 yum
      • 15.2.1 说明
      • 15.2.2 基本指令
  • 十六 mysql安装
    • 1 卸载旧版本
    • 2 安装mysql
      • 2.1 安装源码需要编译
      • 2.2 上传本地mysql5.6源码包至/opt
      • 2.3 编译
      • 2.4 配置mysql
  • 十七 shell编程
    • 17.1 shell编程是个啥
    • 17.2 shell编程打印hello world
      • 17.2.1 代码部分
      • 17.2.2 执行代码
    • 17.3 注释
      • 单行注释
      • 多行注释
    • 17.4 变量
      • 17.4.1 变量的介绍
      • 17.4.2 变量的定义
    • 17.5 设置环境变量
      • 基本语法
      • 快速入门
    • 17.6 位置参数变量
      • 介绍
      • 基本语法
      • 快速入门
    • 17.7 预定义变量
      • 介绍
      • 基本语法
      • 快速入门
    • 17.8 运算符
      • 基本语法
      • 快速入门
    • 17.9 判断
      • 基本语法
      • 判断语句
      • 快速入门
    • 17.10 流程控制
      • 17.10.1 if判断
      • 17.10.2 case 选择分支
      • 17.10.3 for循环
      • 17.10.4 while循环
    • 17.11 与用户交互
      • 基本语法
      • 快速入门
    • 17.12 函数
      • 17.12.1 系统函数
      • 17.12.2 自定义函数
    • 17.13 shell综合案例
  • 十八 程序员装逼之----Ubuntu
    • 18.1 Ubuntu介绍
    • 18.2 安装
    • 18.3 设置Ubuntu支持中文
      • 步骤:
    • 18.4 root用户
      • 设置root用户的密码并使
    • 18.5 Ubuntu使用python
    • 18.6 apt软件管理工具
      • apt软件相关命令
      • 更换镜像源
    • 18.7 ssh远程登录
      • 18.7.1 安装
      • 18.7.2 其它

一. Linux介绍

1 Linux基本常识

1.1 Linux诞生的故事

Unix篇:

为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在1964年, 由AT&A公司的贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE美国通用电气公司)共同发起了Multics(多路信息计算系统)的计划, Multics计划的目的是让大型主机可以同时支持300个以上的终端机连线使用。

贝尔实验室有个叫Ken Thompson的人也参与了这个项目,并在Multics操作系统上开发了一款叫做"星际旅行"的游戏.不过,由于Multics计划的工作进度太慢,资金也短缺.所以1969年,贝尔实验室退出了Multics计划.

那年的某一天,他的妻子带着孩子要回娘家探亲一个月,Ken Thompson为了打发自己无聊的时光,同时也为了可以继续玩他的"星际旅行".于是乎,他就决定写一个操作系统来移植自己的游戏.

于此,Unix的雏形,UNICS就诞生了.只不过此时的UNICS是用汇编语言写的.移植到其它计算机上需要改很多源代码,很不方便.

于是,他又开发一门编程语言---B语言,用B语言重写了UNICS.可是,B语言写的UNICS移植起来,依旧需要改一部分源代码,他对此并不满足.

于是,又开发了一门编程语言---大名鼎鼎的C语言,并用C语言重写了UNICS.

后来,大家取其谐音,称其为Unix.

历史过渡篇:

起初Unix是免费开源的,所有人都可以获得其源码,各个大学也将Unix应用于操作系统的教学.

直到1970年起,AT&A公司意识到Unix的商业价值,他们开始用法律手段试图保护Unix,使得Unix的源码私有化,并且1979起不再允许大学使用其源码用于教学.

1983年的时候,有个叫斯托曼的黑客坐不住了,他认为软件应该是自由的,每个人都应该可以免费的使用,并且可以直接拿到源码,并对源码进行改进.因此他发起了GNU计划.

在1984年的时候,出现了一个叫做塔能鲍姆的大学教授,为了教学目的,基于AT&A公司的system V 开发出了一款叫做Minix的操作系统.

1985年,斯托曼创立了自由软件基金会来为GNU计划提供技术/法律/财政支持.

到了1990年的时候,GNU计划已经开发出了很多优秀的软件,那时唯一没有完成的就是操作系统的内核.

嘣!Linux出来了!

1991年,出现了一个叫做林纳斯的大学在校生,他基于Minux开发出了Linux的第一个版本,并在GNU的自由软件(GPL)条款下发布.在1992年的时候,成功与其它GNU软件结合.

在Linux内核上封装了众多应用软件的操作系统就叫做Linux发行版.

1.2 Linux和Unix的关系

1.3 Linux的读音

你们生活中一定会听到对Linux的各个读法,主流的有:哩呐咳死,哩你咳死,哩牛咳死

那到底哪个读音是正确的呢?

答案是:都正确

为什么呢,因为大家都这么读,你不管怎么读大家都能理解.

这就好比,大众都读甄huan传,虽然后来有人整幺蛾子,说嬛不读huan,读xuān.有用吗?并没有什么卵用.

1.4 Linux的吉祥物

传说,林纳斯这哥们儿写出Linux之后,想着要给Linux定一个吉祥物.但是......百思不得其解

有次他去动物园玩,看企鹅的时候,因为在想吉祥物的事情,所以分神了,再所以就被企鹅咬了.

于是,他就瞅着那只企鹅."咬我?好,就这么定了,吉祥物就是你了"

于是,Linux的吉祥物就是一只企鹅了.

1.5 Linux的主要发行版

我们上面说过,在Linux内核上封装了众多应用软件的操作系统就叫做Linux发行版.

那么,主要的发行版都有哪些呢?

这里面,有一个点要提一下.那就是centos和redhat公司的关系.

起初,redhat公司发行了redhat系统,发展着发展着,演变出了两个分支,一个分支是交由社区来维护和跟新,这个版本就是我们用的最多的Centos.而另一个分支,就是依旧由redhat公司自己负责维护和更新的版本,redhat,这个版本上面有些服务是需要收费的.

1.6 Linux和Windows的比较

2.为啥要学Linux

2.1 Linux运维工程师

? 比如说,想阿里,腾讯这样的公司,服务器有几万台甚至几十万台,这么多服务器,要保证他们的正常运行,那肯定不是python程序员干的活,得有专门的人负责这个事,那就是Linux运维工程师,

? 他们得保证服务器可以7*24小时能够不间断正常提供服务,比如说,服务器优化,日常监控,数据安全,数据备份等等.

2.2 linux嵌入式开发工程师

? 举个简单的例子,就比如说,你的智能手表,家里的智能家居,他们之所以智能,只因为硬件之上有操作系统,操作系统之上有软件.那么它们的操作系统,大部分就是定制裁剪后的Linux,而为他们提供软件支持的,就是Linux嵌入式开发工程师.

2.3 项目维护及部署

? 对于程序员,我们为什么要学Linux呢?

? 这么说吧,我们写的项目最终都是要部署到Linux下的,所以我们学Linux主要是要学习,Linux的基本操作,文件管理,环境搭建以及项目部署.

? 当然,不会也行,正常可以交给运维去做.但这对你自己本身的个人竞争力会有一个比较大的影响.

3.怎么学Linux

1.不需要掌握所有的Linux指令,要学会使用百度

? 那么多命令呢,记得住吗?记不住.怎么办?查就完了.

2.Linux不是编程,重点是实操

二.VMware和Centos的安装

1.Windows,VMware和Centos三者的关系

2.VMware安装

一路下一步,很简单

3. Centos安装

重点:

1 配置网络连接的三种形式

1.1桥连接

概念:

Linux可以和局域网里其它系统进行同行,会占用局域网内一个ip地址,容易造成ip冲突

示意图:

1.2 NAT模式

概念:

网络地址转换,Linux可以访问外网,但不会造成ip冲突

示意图:

1.3 主机模式

概念:

Linux的ip是独立的,不能访问外网

2.centos界面化基本使用

2.1 终端使用:略
2.2 配置网路(界面):(略)

4.VMtools安装

遇到的问题:1.剪切板无法共享; 2.共享文件夹的设置; 3.窗口无法自适应

1 安装步骤:

1.进入centos

2.点击VMware菜单--->install VMware tools

3.打开桌面上挂载好的光驱,复制VMware-tool.tar.gz到opt下

    cp /media/VMware\ Tools/VMwareTools-10.0.1-3160059.tar.gz  /opt/VMwareTools-10.0.1-3160059.tar.gz

4.切换到opt目录,tar命令解压

cd /opt
tar -zxvf VMwareTools-10.0.1-3160059.tar.gz

5.安装

cd vmware-tools-distrib/
./vmware-install.pl

6.重启生效

reboot

2 设置共享文件夹

说明:实际开发中正常使用xftp进行文件上传和下载,为了虚拟机上操作方便,所以设置共享文件夹

步骤:

1.虚拟机--->设置--->选项

2.共享文件夹---->总是启用---->添加路径

3.默认共享文件夹会放在/mnt/hgfs下

小练习:
1.安装VMtools
    虚拟机--》安装vm tools---》cd /media/vmtools --->移动压缩包去opt  ---》解压:tar -zxvf 。。。。 ---》 找.pl文件执行
2.设置共享文件夹(路径随意),windos下编写一个hello.txt的文档
3.在Linux下打开共享文件夹,找到hello.txt,并看到里面的内容

5 创建/使用快照

1.什么是快照

? 说的直白一点,就是创建一个备份.

? 当执行了不可逆的错误操作后,可以通过快照用来恢复系统

2.创建快照的3种模式

? 挂载状态下创建快照

? 开机状态下创建快照

? 关机状态下创建快照

3.如何使用快照

创建:

使用(恢复)

6.克隆

1.什么是克隆

? 就是以某虚拟机为母版,复制出一个一模一样的虚拟机出来,包括里面的数据

2.创建克隆

? 正常选择通过快照创建克隆(只能是关机状态下的克隆)

?

三 Linux目录结构(重点)

1.Linux目录与Windows目录对比

1.1 Windows目录结构

1.2 Linux目录结构

深刻理解Linux 树状文件目录是非常重要的,只有记住他们,你才能在命令行中任意切换,想去哪里去哪里

2 Linux世界里---一切皆文件

对于Linux而言,所有的东西都是文件

比如说,cpu会映射到/dev下的cpu这个目录

再比如说,硬盘(disk)会被映射到/dev下的disk这个目录

3 Linux目录结构详解

3.1 /bin

存放最经常使用的指令的,比如说cp,ls,kill

3.2 /sbin

系统管理员使用的系统管理指令

3.3 /home

存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名的

3.4 /root

系统管理员的用户主目录

3.5 /boot

存放的是启动Linux时使用的一些核心文件

3.6 /lib

库文件存放目录

3.7 /etc

存放所有系统管理所需要的配置文件,比如说mysql中的配置文件,my.conf

3.8 /usr

用户的很多应用程序和文件都放在这个目录下,有点像Windows下的program files目录

3.9 /proc,别动

这是系统内存的映射

3.10 /srv,别动

service的缩写,存放的是一些服务启动之后需要使用的数据

3.11 /sys,别动

系统相关文件

3.12 /tmp

用来存放临时文件

3.13 /dev

类似于windows的设备管理器,把所有的硬件用文件的形式存储

3.14 /media

Linux会识别一些设备,例如U盘,光驱等等,识别后,Linux会把识别的设备挂载到这个目录下

3.15 /mnt

用于让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/nmt/上,然后进入该目录就可以查看里面的内容的,如我们之前设置的共享文件夹

3.16 /opt

正常这个文件夹是用来放安装包的

3.17 /usr/local

安装后的程序存放的地方

3.18 /var

存放经常需要被修改的文件,比如各种日志文件

3.19 /selinux

全名--- security enhanced linux,安全加强linux

这个类似于windows中的杀毒软件,是一种安全系统,比如收到攻击的时候这个文件会被触发

四 远程登录Linux系统

4.1 为什么要远程登录

4.2 Xshell5安装

4.3 连接登录

4.3.1 连接前提

需要Linux开启一个sshd的服务,监听22号端口,一般默认是开启的

查看是否开启:

chkconfig --list | grep sshd

手动开启:

chkconfig  --level 5 sshd on

service sshd restart

4.3.2 Xshell连接配置

查看虚拟机ip:

ifconfig

配置Xshell:

测试:

1.在/home目录下创建文件

cd /home
touch hello.py

2.重启服务器

reboot

五 远程上传加载文件

5.1 Xftp安装

5.2 Xftp连接配置

5.3 中文乱码问题解决

配置好后,刷新即可

练习题:
1.通过Xftp5连接到Linux,并传输windows下一个任意文件,到/root目录下
2.使用Xftp5连接Linux,并下载任意文件到windows

六 vi和vim编辑器

vivim 类似于windows的文本编辑器

所有的Linux系统都会内置vi文本编辑器

vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译错误跳转等功能,因此被广泛使用

如果Linux中没有vim这个命令,可以手动下载:

yum install vim

6.1 vi 和 vim 的三种常见模式

6.1.1 正常模式

? 正常模式下,我们可以使用快捷键对文本进行操作,比如:复制--yy 粘贴:p

? 以vim打开文档,直接进入的就是一般模式,这个模式下,我们可以使用[上下左右]来移动光标.delet删除末尾字符,等等(具体的快捷键后面会说)

6.1.2 插入模式

? 在插入模式下,程序员可以输入内容

? 按下i,o,a,r,I,O,A,R中任意一个键,会进入插入模式.

? 正常习惯按i,因为好记,insert

6.1.3 命令行模式

? 这个模式下,程序员可以输入相关指令,来完成比如:存盘,离开,显示行号等功能(具体指令后面会说)

例子:
使用vim编写一个hello world程序

6.2 三种模式间的切换

6.3 常用快捷键案例(正常模式)

1.拷贝当前行,并粘贴
    拷贝:yy    粘贴:p
2.拷贝当前行向下5行,并粘贴
    拷贝5行:5yy
3.删除当前行
    删除:dd
4.删除当前行向下5行
    删除5行:5dd
5.光标移至最后一行
    G
6.光标移至首行
    gg
7.移动到第7行
    7gg
8.撤销
    u

6.5 常用命令

1.查找某个关键字
    /关键字
2.取消高亮
    :nohl
3.显示行号
    :set nu
4.取消行号
    :set nonu
练习:
1.编写hello world程序
2.各种快捷键试一试

七 开机/重启/用户切换/注销

7.1 关机/重启命令

shutdown命令
    shutdown -h now :立即关机
    shutdown -h 2   :1分钟后关机
    shutdown -r now :立即重启
    shutdown -r 1   :1分钟后重启

sleep 10 && halt   10秒钟后关机

halt
    关机
reboot
    重启
sync:
    把内存的数据同步到磁盘

特别注意:当关机或重启前,都应当先执行一下sync指令,把内存的数据写入磁盘,防止数据丢失

7.2 用户切换/注销

7.2.1 基本说明:

正常在公司是不会给你root权限的,就算给你了root权限,也不要拿root用户直接登录,避免操作失误

正常情况都是使用普通用户登录,然后主要管理员权限的时候再切换

7.2.2 切换用户

su - 用户名    切换用户
exit          回到原来用户

7.2.3 注销用户

前提:图形界面无效(启动级别5)
logout

八 用户管理

8.1 知识储备

1.Linux
系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

2.Linux 的用户需要至少要属于一个组

8.2 添加用户

8.2.1 基本语法

useradd  [选项]  用户名

例子:
useradd lxx 

说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录

useradd -d 目录路径 用户名

指定用户组

useradd -g 用户组名 用户名

8.3 给用户指定或修改密码

8.3.1 基本语法

passwd 用户名

8.4 删除用户

8.4.1 基本语法

userdel 用户名         删除用户,保留家目录
userdel -r 用户名      删除用户,不保留家目录

8.4.2 说明

正常在我们删除用户的时候,一般会保留家目录

8.5 查询用户信息

8.5.1 基本语法

id 用户名

用户名不存在

8.6 切换用户

8.6.1 说明

当用户权限不够时,可以通过su -,来切换到高权限用户,比如root用户

8.6.2 基本语法

su - 用户名        切换用户
exit              返回原来用户

8.6.3 补充说明

从高权限用户切换到低权限用户时,不需要密码

小练习:
1.创建一个lxx的用户并指定密码
    useradd lxx
    passwd lxx
    123
    123
2.切换到lxx
    su - lxx
3.尝试cd到/root目录
    权限不够
4.切换回root用户
    su - root     997997
    exit/logout
5.再次cd到/root目录
    cd /root

8.7 用户组

8.7.1 说明

用以对具备同一权限的用户进行统一管理

就好比:运维组,技术组

8.7.2 增加组

groupadd 组名

8.7.3 删除组

groupdel 组名

前提:组内不能有用户,否则无法删除

8.8 修改用户的组

8.8.1 基本指令

usermod -g 组名 用户名

8.9 /etc/passwd 文件

这是用户的配置文件,记录着用户的各种信息

每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell

8.10 /etc/shadow 文件

口令配置文件

存用户密码和相关时间的地方

8.11 /etc/group 文件

组的配置文件

九. 实用指令

9.1 指定运行级别

运行级别说明:

0:关机

1:单用户[找回丢失密码] 没有密码,直接是root用户

2:多用户状态[无网络服务] 基本不用

3:多用户状态[有网络服务] 正常都是它

4:保留级别

5:图形界面

6:系统重启

9.2 修改默认运行级别

vim /etc/inittab

修改最后一行:
id:5:initdefault:

9.3 切换运行级别

9.3.1 基本指令

init [012356]
测试:
1.从图形化切到级别3
    init 3
2.再切回图形化
    init 5
3.切换到关机级别
    init 0

9.3.2 面试题

? 如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。

? 思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。

动手:
开机->在引导时输入 回车键-> 看到一个界面输入 e ->  看到一个新的界面,选中第二行(编辑内核)在输入  e->  在这行最后输入1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
这时,我们就进入到单用户模式,使用 passwd  指令来修改 root  密码。
练习:
1.假设我们的 root 密码忘记了,请问如何找回密码
2.请设置我们的 运行级别,linux 运行后,直接进入到 命令行界面,即进入到 3 运行级别
    vim /etc/inittab
    最后一行
    id:3:initdefault

9.4 帮助指令

man 指令及配置文件
help shell内置指令

百度

9.5 文件目录指令

9.5.1 pwd指令

pwd     显示当前所在的目录

9.5.2 ls指令

ls [选项] [目录或文件]     查看文件信息
ls -a                   查看所有文件和目录,包括隐藏的
ls -l                   以列表的方式显示
ls -h                   以人类可读方式显示

9.5.3 cd指令

cd 路径
    绝对路径:cd /etc/
    相对路径:
cd ~  或者 cd:    回到家目录
cd ..:  回到上一级目录
练习:
1.使用绝对路径,切换到root目录
    cd /root
2.使用相对路径,切换到root目录,比如当前在/usr/lib
    cd ../../root
3.回到上一级目录
    cd ..
4.回到家目录
    cd
    cd ~

9.5.4 mkdir指令

mkdir [选项] 路径       创建文件夹
mkdir -p 路径          创建多级文件夹

9.5.5 rmdir指令

rmdir [选项] 路径       删除空文件夹
rmdir -p 路径          递归删除空文件夹

文件夹下有内容,则无法删除

9.5.6 touch 指令

touch 文件路径

可以一次创建多个文件
touch 文件路径1 文件路径2

9.5.7 cp指令

拷贝文件到目标路径

9.5.7.1 基本语法

cp [选项] 源路径 目标路径

cp 源路径 目标路径             拷贝单个文件
cp -r 源路径 目标路径          拷贝文件夹
小练习:
1./home下创建test1文件夹
    cd /home
    mkdir test1

    mkdir /home/test1
2.test1文件夹中创建a.txt,b.txt,c.txt三个文件
    cd /home/test1
    touch a.txt b.txt c.txt

3.把test1中的a.txt复制到/home下
    cp /home/test1/a.txt /home
4.新建一个文件夹test2
    mkdir /home/test2
5.拷贝整个test1到test2下
    cp -r /home/test1 /home/test2

9.5.7.1 补充

当拷贝时发现相同文件,会提示[是否覆盖?]

\cp [选项] 源路径 目标路径       取消提示,强制复制

9.5.8 rm指令

删除目录或者文件

9.5.8.1基本语法

rm [选项] 目标路径

rm 文件路径         删除文件
rm -r 文件夹路径     删除文件夹
rm -f xxxx          强制删除不提示
小练习:
1.删除test1中的a.txt文件
    rm test1/a.txt
2.删除test2整个文件夹
    rm -rf test2

9.5.9 mv指令

移动文件或重命名

9.5.9.1 基本语法

mv 源路径 目标路径
小练习:
1.修改test1中的a.txt 为 d.txt

2.把test1中的c.txt 移动 到/home下

9.5.10 cat指令

显示文件内容

9.5.10.1 基本语法

cat [选项] 文件路径

cat 文件路径        显示文件内容
cat -n 文件路径     显示文件内容,并显示行号
小练习:
1.用cat显示/etc/profile 的内容,并显示行号
    cat -n /etc/profile

9.5.10.2 补充说明

正常情况为了方便阅读,我们会在cat指令最后加上管道符"
|",把内容传给more,分页显示

如:

cat -n /etc/profile | more
cat -n /etc/profile | grep "ip"

9.5.11 more指令

more指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容

more指令中内置了很多快捷键,用起来很方便

9.5.11.1 基本语法

more 文件路径

9.5.11.2 快捷键

空格          向下翻一页
Enter        向下翻一行
q            立即离开
Ctrl+F       向下滚动一屏  相当于空格
Ctrl+B       向上滚动一屏
=            显示当前行号
:f           输出文件名和当前行号
/搜索字段

9.5.12 less指令

比more更加强大,功能比more更过,这里只介绍部分

9.5.12.1 基本语法

less 文件路径

9.5.12.2 快捷键

空格              向下翻一页
pagedown          向下翻一页
pageup            向上翻一页
/字符串            向下查找[字符串],n下一个,N上一个
?字符串            向上查找[字符串],n下一个,N上一个
q                 离开less

9.5.13 >指令/>> 指令

9.5.13.1 基本说明

命令 >/>> 文件路径     :   命名执行结果写入后面的文件里

把前方语句的结果存进文件,若文件不存在会自动创建

>:输出重定向         会覆盖原来文件内容
>>:追加重定向        追加到文件末尾

9.5.13.2 示例

1.a.txt里写上任意内容

2.把ll 查找的结果,用输出(覆盖)重定向写进a.txt
3.b.txt里写上任意内容

4.把ll 查找的结果,用追加重定向写进b.txt
小练习:
1.把/etc/profile 的内容 写进 /home/c.txt中
    1.cp /etc/profile /home/c.txt
    2.cat /etc/profile > /home/c.txt

9.5.14 echo指令

把内容输出到控制台

如下:
echo "我是杨家三少"
echo $PATH
小练习:
1.用echo输出'hello world'

9.5.15 head指令

head
用于显示文件的开头部分内容,默认情况下
head 指令显示文件的前
10 行内容

9.5.15.1 基本语法

head 文件路径           查看文件前10行
head -n 5 文件路径      查看文件前5行
小练习:
1.查看/etc/profile 的前5行内容

9.5.15 tail指令

tail
用于显示文件的结尾部分内容,默认情况下tail指令显示文件的后10行内容

9.5.15.1 基本语法

tail 文件路径           查看文件前10行
tail -n 5 文件路径      查看文件前5行
tail -f 文件路径        实时追踪文件所有的更新-----经常使用
小练习:
1.查看/etc/profile 的后5行内容
2.实时追踪/home/myinfo.txt,在虚拟机上更新myinfo.txt,看xshell的效果

9.5.16 ln指令

软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径

ln  源文件或源文件夹 软连接名      硬链接
ln -s 源文件或源文件夹 软连接名    软链接
测试:
1. 在/home目录下创建/root的软链接,名字为linktoroot
    ln -s /root linktoroot
2. cd 到软链接,然后pwd,查看当前路径

3. 创建一个a.txt的文件

4. cd 到 /root目录,查看是否有变化
5. 删除/home下的linktoroot    (需要注意,不能加/,最好不要加-r)
    rm -f linktoroot

9.5.17 history指令

查看已经执行过历史命令,也可以执行历史指令

history         查看所有的历史指令
history 10      查看最近执行的10条指令
!100            执行编号为100的指令

所以,在公司,指令不要瞎逼乱输

9.6 时间日期类

9.6.1 date 指令

9.6.1.1 基本语法

date            显示当前日期
date +%Y        显示当前年份
date +%m        显示当前月份
date +%d        显示当前天
date “+%Y-%m-%d %H:%M:%S”
小练习:
1.显示当前时间信息
2.显示当前时间年月日
3.显示当前时间年月日时分秒

9.6.2 cal指令

查看日历

cal         显示当前日历
cal 2020    显示2020年的日历
cal 10 2018  显示2018年10月份日历

9.6.3 find指令

find
指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于windows的查找

选项:
-name 文件名       按文件名查找
-user 用户名       查找属于该用户的所有文件
-size             按文件大小查找
    +20M
    -20M
    20M
    20K

**“*.txt” 通配符要加引号**

find / -user lxx -name "*.txt"


小练习:
1.根据名称查找/home 目录下的 a.txt 文件
    find /home -name a.txt
    find /home -name "*.txt"
2.查找/opt 目录下,用户名称为 lxx 的文件
    find /opt -user lxx
3.查找整个 linux 系统下大于 20M 的文件
    find / -size +20M
4.查询/ 目录下,所有.txt 的文件
    find / -name "*.txt"

9.6.4 grep 指令 和 管道符号 |

管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理

grep:过滤查找

grep [选项] 过滤内容

选项:
-n      显示匹配行及行号
-i      忽略字母大小写
例子:
1.创建文件,写上多行,包含'yes'和'YES'

2.查找'yes'所在行,并显示行号
    cat a.txt | grep -n "yes"
3.忽略大小写,查找'yes'所在行
    cat a.txt | grep -ni "yes"

9.7 压缩和解压类

9.7.1 gzip/gunzip 指令(只能用于文件压缩)

用于压缩和解压文件

gzip 文件路径
gunzip gz文件路径

说明:使用gzip压缩文件之后,不会保留原来的文件

例子:
1.将 /home 下的 1.txt 文件使用gzip压缩
2.将 /home 下的 1.txt.gz 文件使用gunzip解压

9.7.2 zip/unzip 指令

zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的

zip [选项] xxx.zip 被压缩内容          压缩文件或者目录
    -r                              压缩目录

unzip [选项] xxx.zip                  解压文件
    -d 目录                           指定压缩后的存放目录
例子:
1.将 /home 下的 所有文件进行压缩成 mypackage.zip
    zip -r mypackage.zip /home
    zip -r mypackage.zip /home/*
2.讲mypackge.zip解压到/opt/tmp下
    unzip -d /opt/tmp mypackge.zip

9.7.3 tar指令

tar 指令 是打包指令,最后打包后的文件是
.tar.gz
的文件

压缩:
tar -zcvf xx.tar.gz  被压缩内容(文件,文件夹,多个也行)                    压缩
tar -zxvf xx.tar.gz  -C 目标路径                                        解压

z:使用gzip格式压缩,否则是单纯打包
c:压缩
x:解压
f:显示压缩解压过程
v:显示提示信息
例子:
1.压缩多个文件,将  /home/a1.txt 和  /home/a2.txt 压缩成    a.tar.gz
    tar -zcvf a.tar.gz /home/a1.txt /home/a2.txt
2.将/home 的文件夹 压缩成 myhome.tar.gz
3.将  a.tar.gz   解压到当前目录
4.将 myhome.tar.gz   解压到 /opt/ 目录下

十 组管理和权限管理

10.1 Linux组基本介绍

在 linux 中的每个用户必须属于一个组,不能独立于组外。在
linux 中每个文件有所有者、所在组、其它组的概念

10.2 文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

10.2.1 查看文件的所有者

ls -ahl
例子:
1.创建一个组 police

2.再创建一个用户 tom
3.然后使用 tom 来创建一个文件 ok.txt,看看情况如何

10.2.2 修改文件所有者

chown 用户名 文件名
例子:
1.使用 root  创建一个文件 apple.txt

2.然后将其所有者修改成 tom
3.查看文件所有者

10.3 组的创建

groupadd 组名
例子:
1.创建一个组,monster
2.创建一个用户fox,并放到monster组中

10.4 文件/目录 所在组

当某个用户创建了一个当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。

10.4.1 查看文件/目录 所在组

ls –ahl

10.4.2 修改文件所在组

chgrp 组名 文件名
例子:
1.使用 root 用户创建文件 orange.txt
2.查看当前这个文件属于哪个组
3.将这个文件所在组,修改到 police 组 

10.5 其他组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

10.6 改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用
root 的管理权限可以改变某个用户所在的组

10.6.1 改变用户所在组

usermod –g  组名  用户名

10.7 权限基本介绍

ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限

10.8 rwx权限详解

10.8.1 rwx作用到文件

r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行

10.8.2 rwx作用到目录

r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]

10.9 文件及目录权限实际案例

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

- 表示类型为文件
第一组rwx: 表示所有者 可读  可写 可执行
第二组rw-: 表示同组用户  可读 可写 但不能执行
第三组r--: 表示其他用户  只可读

可用数字表示:
r = 4
w = 2
x = 1
因此rwx = 4+2+1 = 7

10.10 修改权限

chmod 权限变更格式 文件或目录路径

权限变更格式一:
u:所有者   g:所有组   o:其他用户  a:所有人

1. u=rwx,g=rx,o=x
2. o+w                  其它用户增加w权限
3. a-x                  所有人减去执行权限
例子:
1.给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
    chmod u=rwx,g=rx,o=rx abc
2.给 abc 文件的所有者除去执行的权限,增加组写的权限
    chmod u-x,g+w abc
3.给 abc 文件,所有用户添加读的权限
    chmod a+r abc
权限变更格式二:
r = 4   w = 2  x = 1    rwx = 7   rx = 5
chmod u=rwx,g=rx,o=x   可以写成     chmod 751
例子:
1.将 /home/abc 文件的权限修改成  rwxr-xr-x, 使用给数字的方式实现
    chmod  755  /home/abc

10.11 修改文件所有者

chown newowner file         改变文件所有者
chown -R newowner 文件夹     使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所有者修改成 tom
2.请将 /home/xxx 目录下所有的文件和目录的所有者都修改成 tom

10.12 修改文件所在组

chgrp newgroup file         改变文件所有组
chgrp -R newgroup 文件夹     使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所在组修改成 bandit (土匪)
2.请将 /home/xxx 目录下所有的文件和目录的所在组都修改成 bandit(土匪) 

10.13 小案例-警察和土匪游戏

police,bandit  组
jack, jerry: 警 察
xh, xq: 土 匪

1.创建组
    groupadd police

2.创建用户

3.jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限

4.jack 修改该文件,让其它组人可以读, 本组人可以读写

5.xh 投靠 警察,看看是否可以读写

6.使用 jack  给他的家目录 /home/jack 的所在组一个 rx 的权限
练习:
练习文件权限管理[课堂练习]

1.建立两个组(神仙,妖怪)
2.建立四个用户(唐僧,悟空,八戒,沙僧)
3.设置密码
4.把悟空,八戒放入妖怪;唐僧,沙僧放入神仙
5.用悟空建立一个文件 (monkey.py 该文件要输出 i am monkey)
6.给八戒一个可以r,w的权限,唐僧,沙僧对该文件没有权限
7.八戒修改 monkey.py 加入一句话( i am pig)
8.把 沙僧 放入妖怪组
9.让沙僧修改monkey.py, 加入一句话 ("我是沙僧,我是妖怪!");

十一 crond任务调度

10.1示意图

10.2 基本语法

crontab [选项]

    -e : bianji crontab定时任务
    -l : 查询crontab
    -r : 删除当前用户所有的crontab任务
例子:
每分钟执行查看一次/etc目录,把目录内容写进/tmp/a.txt下
ll /etc >> /tmp/a.txt

具体实现步骤:
1.crontab –e
2.*/1 * * * * ls -l /etc >> /tmp/a.txt
3.保存退出

10.3 参数细节说明

时间参数案例:
1.每天22点45分执行
    45 22 * * *
2.每周一的17点执行
    0 17 * * 1
3.每月1号,15号的凌晨5点执行
    0 5 1,15 * *
4.每周一到周五的凌晨4点40份执行
    40 4 * * 1-5
5.每天的凌晨4点,每隔10分钟执行一次命令
    */10 4 * * *

10.4 案例

1.每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate  文件中
    1.写个脚本,/home/mysh1.sh (bash 路径、。。或者   给文件一个可执行权限)
    2.date >> /tmp/mydate
    3.给/home/mysh1.sh可执行权限
    4.crontab -e
    5.*/1 * * * * /home/mysh1.sh
2.每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal  文件中
    1.写个脚本,/home/mysh2.sh (bash 路径、。。或者   给文件一个可执行权限)
    2.
        date >> /home/mycal
        cal >> /home/mycal
    3.给/home/mysh1.sh可执行权限
    4.crontab -e
    5.*/1 * * * * /home/mysh2.sh

十二 Linux 磁盘分区、挂载

12.1 分区基础知识

12.1.1 分区方式

mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区上
3.扩展分区要占一个主分区
4.mbr最大只支持2TB,但拥有最好的兼容性
gpt分区:
1.支持无限多个主分区(但操作系统会限制,比如windows下最多支持128个主分区)
2.最大支持18EB的容量(1EB=1024PB)
3.windows7 64位后支持gpt模式

12.1.2 windows下的磁盘分区

12.2Linux分区

12.2.1 原理介绍

1.Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分

2.Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得

12.2.2 硬盘说明

现在主要的硬盘都是scsi硬盘

linux中对scsi硬盘的标识为"sdx~"

如:

sda1:表示该磁盘的分区1

sda2:表示该磁盘的分区2

12.3 挂载的经典案例

需求是给我们的 Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk

步骤:
1.虚拟机添加硬盘
2.分区
    fdisk /dev/sdb
    m   选择帮助
    n   增加分区
    p   划主分区
    1   主分区1
    1   默认
    w   写入分区信息并退出

3.格式化
    mkfs -t ext4 /dev/sdb1

4.挂载
    mount /dev/sdb1 /home/newdisk

5.设置自动挂载
    vim /etc/fstab
    (内容如下)
    mount -a   立即生效

12.4 磁盘情况查询

12.4.1 查询系统整体磁盘使用情况

df -lh

12.4.2 查询指定目录的磁盘占用情况

du          /目录
    -h  带计量单位(人类可读)
    -s  指令目录占用磁盘大小
    -a  含文件
    -c  列出明细,并显示汇总值
    --max-depth=1   子目录深度

    du -ach --max-depth=1
例子:
查询  /opt 目录的磁盘占用情况,深度为 1

du -ach --max-depth=1 /opt

12.4.3 常见案例

1.统计/home 文件夹下文件的个数
    ll /home | grep "^-" | wc -l
2.统计/home 文件夹下目录的个数
    ll /home | grep "^d" | wc -l
3.统计/home 文件夹下文件的个数,包括子文件夹里的
    ll -R /home | grep "^-" | wc -l
4.统计文件夹下目录的个数,包括子文件夹里的
    ll -R /home | grep "^d" | wc -l

十三 网络配置

13.1Linux网络配置原理图(NAT)

13.2 查看网络ip和网关

13.2.1 查看虚拟网络编辑器

13.2.2 修改ip地址(修改虚拟网络的ip)

13.2.3 查看网关

13.2.4 查看windows环境的中 VMnet8

网络配置 (ipconfig 指令)

1.使用命令查看

ipconfig

2.界面查看

13.3 ping 测试主机之间网络连通

13.3.1 基本语法

ping 目标ip               测试当前服务器是否可以连接目的主机

13.3.2 小例子

测试当前服务器是否可以连接百度

ping www.baidu.com

13.4 Linux网络环境配置

13.4.1 第一种方法(自动获取)

此方式的缺点:

linux 启动后会自动获取 IP,缺点是每次自动获取的
ip 地址可能不一样。这个不适用于做服务器,因为我们的服务器的
ip 需要时固定的。

13.4.2 第二种方法(指定固定ip)

直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网

vim  /etc/sysconfig/network-scripts/ifcfg-eth0

修改配置文件后,要重启网络服务才能生效

service network restart

十四 进程管理

14.1 基本介绍

1.在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号
2.每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
3.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
4.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束

14.2 显示系统执行的进程

14.2.1 说明

查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

14.2.2 ps指令详解

BSD风格 详解

user            用户名称
pid             进程号
%cpu            进程占用cpu百分比
%%mem           进程占用物理内存的百分比
vsz             进程占用虚拟内存的大小
rss             进程占用物理内存的大小
tty             终端名称(后台则为?)
stat            进程状态
    S:睡眠
    s:会话的先导进程
    N:进程拥有比普通优先级更低的优先级
    R:正在运行
    D:短期等待
    Z:僵尸进程
    T:被跟踪或者被停止
start           进程启动时间
time            使用cpu总时间
command         启动进程所用的命令和参数,如果过长会被截断显示

system V 风格详解

uid             用户id
pid             进程id
ppid            父进程id
C               进程占cpu百分比
stime           进程启动时间
tty             终端名称(后台则为?)
cmd             启动进程所用的命令和参数
例子:
1.查看sshd进程的父进程id是多少
    ps -ef | grep sshd

14.3 终止进程kill和killall

14.3.1 说明

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。

14.3.2 基本语法:

kill 进程号
    -9 强迫进程立即停止
killall 进程名称

14.3.4 例子

1.踢掉某个非法登录用户

?

2.终止远程登录服务
sshd, 在适当时候再次重启
sshd 服务

3.终止多个 gedit 编辑器 【killall
, 通过进程名称来终止进程】

?

4.强制杀掉一个终端

? -9 强杀

14.4 查看进程树 pstree

pstree [选项]
    -p    查看进程pid
    -u    查看进程所属用户

14.5 服务(service)管理

14.5.1 说明

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是
Linux 中非常重要的知识点。

14.5.2 基本使用

service 服务名 [start | stop | restart | reload | status]

14.5.3 例子

1.查看当前防火墙的状况,关闭防火墙和重启防火墙(iptables)

service这种方式关闭或者打开服务只是临时生效

重启后,还是回到以前对服务的设置

14.5.4 查看服务名

/etc/init.d 此文件夹下放着系统都有哪些服务

ls -l /etc/init.d

14.5.5 服务器运行级别(runlevel)

查看或者修改默认级别: vi /etc/inittab

Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5

运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动

运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆

运行级别 2:多用户状态(没有 NFS),不支持网络

运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式

运行级别 4:系统未使用,保留

运行级别 5:X11 控制台,登陆后进入图形 GUI 模式

运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

14.5.6 开机流程说明

14.5.7 chkconfig指令

14.5.7.1 说明

通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭

14.5.7.2 基本语法

chkconfig                             查看每个服务的配置
chkconfig 服务名                       查看具体服务的配置
chkconfig --level 5 服务名  on/off     给服务设置是否自动启动

14.5.7.3 例子

1.请显示当前系统所有服务的各个运行级别的运行状态
2.请查看 sshd 服务的运行状态
3.将 sshd 服务在运行级别 5 下设置为不自动启动,看看有什么效果?
4.当运行级别为 5 时,关闭防火墙。
5.在所有运行级别下,关闭防火墙
6.在所有运行级别下,开启防火墙

chkconfig 重新设置服务后自启动或关闭,需要重启机器
reboot
才能生效

14.6 动态监控进程

14.6.1 说明

top
与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于
top 在执行一段时间可以更新正在运行的的进程

14.6.2 基本语法

top [选项]
    -d          指定每隔几秒更新,默认3秒
    -i          不显示任何闲置或者僵尸进程
    -p id号      监听指定进程

交互操作:
P       以cpu使用率排序,默认就这个
M       以内存使用率排序
N       以pid排序
u       监听具体用户
k       终止指定进程
q       退出top

14.6.3 例子

1.监视特定用户
2.终止指定的进程
3.指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒)

十五. rpm和yum

15.1 rpm包的管理

15.1.1 介绍

一种用于互联网下载包的打包及安装工具.它生成具有.RPM
扩展名的文件。RPM
是 RedHat
Package Manager(RedHat 软件包管理工具)的缩写,类似
windows 的 setup.exe

15.1.2 rpm包的简单查询指令

rpm –qa             查询已安装的 rpm 列表

15.1.3 rpm 包名的基本格式

一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm

firefox:名称
45.0.1-1:版本号
el6.centos.x86_64:centos6.X---64位

15.1.4 rpm其它指令

rpm -q 软件包名                 查看是否已经安装
rpm -qi 软件包名                查看软件包信息
rpm -ql 软件包名                查看软件包中的文件安装位置
rpm -qf 文件(如:/etc/passwd)    查看某个文件属于哪个rpm包

15.1.5 卸载rpm包

rpm -e 包名
例子:
rpm -e firefox

包依赖问题:

如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息

 rpm -e --nodeps 包名             强制删除

15.1.6 安装rpm包

rpm -ivh RPM 包全路径名称

i:install 安装
v:verbose 提示
h:hash 进度条
例子:安装firefox

1.挂载centos的iso镜像文件
2.media下找到rpm
3.拷贝到opt下
4.安装

15.2 yum

15.2.1 说明

Yum
是一个
Shell前端软件包管理器。基于 RPM包管理,能够从指定的服务器自动下载
RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。

类型python中的pip

15.2.2 基本指令

yum list|grep xx        查询yum服务器上是否有需要安装的包
yum install xxx         下载安装
例子:
1.使用yum下载安装firefox

十六 mysql安装

以源码安装的方式编译和安装Mysql 5.6

1 卸载旧版本

rpm -qa | grep mysql        检查是否有旧版本

查询结果:mysql-libs-5.1.73-7.el6.x86_64

rpm -e mysql-libs           删除旧版本
rpm -e --nodeps mysql-libs  强行删除

2 安装mysql

2.1 安装源码需要编译

下载c的编译工具
yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

2.2 上传本地mysql5.6源码包至/opt

xftp连接上传

2.3 编译

tar -zxvf mysql-5.6.14.tar.gz       解压
cd mysql-5.6.14                     切换目录

编译准备:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

编译并安装:
make && make install

2.4 配置mysql

权限管理:

1.创建mysql组,及用户
    groupadd mysql
    useradd -g mysql mysql

初始化配置:
1.cd /usr/local/mysql
2.scripts/mysql_install_db

修改权限:
修改/usr/local/mysql权限
    chown -R mysql:mysql /usr/local/mysql

在启动MySQL服务时,会先在/etc目录下找my.cnf,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf

查看/etc下是否有my.cnf,有就换个名字,防止干扰
1.mv /etc/my.cnf /etc/my.cnf.bak

添加服务(mysql服务放进/etc/init.d),并设置开机自启:
1.cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
2.chkconfig mysql on
3.service mysql start

配置环境变量:
1.vi /etc/profile
2.在文件中加入:
    export PATH=$PATH:/usr/local/mysql/bin
3.source /etc/profile

十七 shell编程

17.1 shell编程是个啥

Shell
是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序

画图说明

17.2 shell编程打印hello world

17.2.1 代码部分

#!/bin/bash
echo 'hello world'

代码解释:

1.#!/bin/bash:

? 告诉计算机,使用bash解释器来执行代码

2.echo:

? 控制台输出

17.2.2 执行代码

方式一:

给脚本可执行权限

chmod 744 myshell.sh

然后直接运行脚本

方式二:(不推荐)

直接调用shell解释器执行

bash myshell.sh

17.3 注释

单行注释

#内容

多行注释

:<<!
内容
!

17.4 变量

17.4.1 变量的介绍

1.Linux中变量的分类:系统变量  自定义变量
2.系统变量:
    $PATH
    $HOME
    $PWD
    $SHELL
    $USER
3.显示当前shell中所有的变量:set

17.4.2 变量的定义

基本语法

1.定义变量:变量名=变量值
2.撤销变量:unset 变量名
3.声明静态变量:readonly 变量名.      静态变量不能unset

快速入门

1.定义变量a

2.撤销变量a
3.声明静态变量b=2,尝试unset撤销

定义规则

1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2.等号两侧不能有空格
3.变量名称一般习惯为大写

将命令的返回值赋给变量(用的多)

1.A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A
2.A=$(ls -la) 等价于反引号

17.5 设置环境变量

基本语法

1.export 变量名=变量值        将shell变量输出给环境变量
2.source 配置文件            让修改后的配置信息立即生效
3.echo $变量值               查看环境变量的值

快速入门

1.在/etc/profile文件中定义MY_NAME环境变量

2.查看环境变量MY_NAME的值

强调:在使用MY_NAME前,需要让其生效
3.source /etc/profile

4,在另外一个shell程序中使用MY_NAME

17.6 位置参数变量

介绍

当我们执行一个 shell
脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

基本语法

./myshell.sh 123 234

$0 ./myshell.sh

$1 123

$* "123 234"

[email protected] 相当于【123,234】

$# 2

1.
$n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

2.
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

3.
[email protected]  (功能描述:这个变量也代表命令行中所有的参数,不过[email protected]把每个参数区分对待)

4.
$#(功能描述:这个变量代表命令行中所有参数的个数)

快速入门

编写一个shell脚本,pasition.sh,在脚本中获取到命令行的各个参数信息

17.7 预定义变量

介绍

就是 shell 设计者事先已经定义好的变量,可以直接在
shell 脚本中使用

基本语法

$$  (功能描述:当前进程的进程号(PID))
$!  (功能描述:后台运行的最后一个进程的进程号(PID))
$?(获取函数return的结果)   (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败)

快速入门

在一个shell脚本pre.sh中简单实用一下预定义变量(提示, ./myshell.sh &  后台运行myshell.sh)

17.8 运算符

基本语法

1.$((运算式))
2.$[运算式]   ------推荐使用
3.`expr m + n`
    特点:运算符之间要有空格
    +
    -
    /
    %
    \*
    \(  \)
    

快速入门

写一个demo.sh完成:
1.3种方式计算(2+3)*4的值

2.方式2求出命令行两个参数的和
    

17.9 判断

基本语法

[ 条件 ]          注意:条件前后要有空格

特别的:
[ 非空 ]    为true
[]         为false
[ haha ] && echo true || echo false

判断语句

字符串比较

=   判等
!=  判不相等

整数比较

-lt     小于
-le     小于等于
-gt     大于
-ge     大于等于
-eg     等于
-ne     不等于

文件权限判断

-r  有读的权限   [ -r 文件 ]
-w  有写的权限   [ -w 文件路径 ]
-x  有执行权限

文件类型判断

-f 存在并且是一般文件    [-f 文件]
-e 文件存在 (用的多)
-d 存在并且是一个目录

快速入门

1.'ok'是否等于'ok'
2.'ok100' 是否等于 'ok'
3.23 是否大于 23
4.23 是否大于等于 23
5./root是否存在
6./root是否是一般文件

17.10 流程控制

17.10.1 if判断

基本语法

if [ 条件 ]
then
    代码
fi
if [ 条件 ]
then
    代码
else
    代码
fi
if [ 条件 ]
then
    代码
elif [ 条件 ]
then
    代码
else
    代码
fi

快速入门

编写shell脚本,if.sh:
如果输入参数,大于等于90,优秀,大于等于60,则输出'及格了',如果小于60,则输出'不及格'

17.10.2 case 选择分支

基本语法(相当诡异,令人发指,what a fuck)

case $变量名 in
'值1')
代码
;;
'值2')
代码
;;
*)
代码                  都没命中执行
;;
esac

快速入门

编写shell脚本,case.sh:
当命令行参数是1时,输出'周一';是2时,输出'周二',其它情况,输出'其它'

17.10.3 for循环

遍历

基本语法
for 变量 in 值1 值2 值3
do
    代码
done
快速入门
编写foreach.sh:
打印命令行输入的参数[这里可以看出$*和[email protected]的区别]

循环

基本语法
for ((初始值;循环条件;追加条件))
do
    代码
done
快速入门
编写for.sh:
从1加到100,并输出结果

17.10.4 while循环

基本语法

while [ 条件 ]
do
    代码
done

快速入门

编写while.sh:
从命令行中输出一个数n,统计1+...+n的值是多少

17.11 与用户交互

基本语法

read 选项 变量
选项:
-p:提示信息
-t:等待输入的时间

快速入门

编写input.sh:
1.读取控制带输入的值

2.读取控制台输入的值,等待6秒

17.12 函数

17.12.1 系统函数

basename

基本语法
basename [pathname] [suffix]
获得路径最后一部分

如果指定的suffix,那么会去掉结果中suffix的部分
快速入门
1.返回/home/aaa/test.txt中'test.txt'的部分
2.返回/home/aaa/test.txt中'test'的部分

dirname

基本语法
dirname [pathname]
获得基础路径
快速入门
1.返回/home/aaa/test.txt中'/home/aaa'的部分

17.12.2 自定义函数

基本语法

function 函数名(){
    代码;
    #参数使用:$1,$2,...,${10}...
    return xxx;
}

return 的结果会被谁捕获: $?

调用:
函数名 值1 值2

快速入门

编写func.sh:
用函数的形式,计算两个参数的和

17.13 shell综合案例

在/root下编写mysql_db_backup.sh,备份mydb数据库

需求:
1.每天凌晨2点10分,备份数据库mydb  到/data/backup/db
2.备份开始和备份结束时能够给出提示信息
3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,如2019-09-28-044403.tar.gz
    2019_12_20_1220
4.在备份的同时,检查是否有10天前的备份文件,如果有就删除

mysqldump -u root -p 997997 --host=127.0.0.1 mydb 

#!/bin/bash

#备份的路径
BACKUP=/data/backup/db
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)

echo "=======开始备份======"
echo "=====备份的路径是 $BACKUP/$DATETIME.tar.gz"

#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=997997
#备份的数据库
DATABASE=mydb

如果备份路径不存在,就创建
[ ! -d "$BACKUP/DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份指令
mysqldump -u$DB_USER -p$DB_PWD --host=$HOST $DATABASE | gzip > $BACKUO/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME

#删除10天前的文件
find $BACKUP -mtime +10 --name "*.tar.gz" -exec rm -rf {} \;

echo "=====备份成功+++++"

十八 程序员装逼之----Ubuntu

18.1 Ubuntu介绍

1.Ubuntu是一个以桌面应用为主的开源操作系统,它的界面做的非常好看

2.专业的程序员一般会选择Ubuntu

原因:
1.为了装逼
2.开发环境更加接近真实服务器环境,因为都是基于GNU/Linux内核开发的
3.穷

3.下载地址:http://cn.ubuntu.com/download

18.2 安装

略,比centos更加简单(装的时候要联网,它会去网上下载一些应用)

18.3 设置Ubuntu支持中文

默认安装的
ubuntu 中只有英文语言,因此是不能显示汉字的。要正确显示汉字,需要安装中文语言包。

步骤:

1.单击左侧图标栏打开 System Settings(系统设置)菜单,点击打开 Language Support(语言支持)选项卡。
2.点击 Install / Remove Languages,在弹出的选项卡中下拉找到 Chinese(Simplified),即中文简体, 在后面的选项框中打勾。然后点击 Apply Changes 提交,系统会自动联网下载中文语言包。(保证
ubuntu 是联网的)。
3.这时“汉语(中国)”在最后一位因为当前第一位是”English”,所以默认显示都是英文。我们如果希望默认显示用中文,则应该将“汉语(中国)”设置为第一位。设置方法是拖动,鼠标单击
“汉语(中国)”,当底色变化(表示选中了)后,按住鼠标左键不松手,向上拖动放置到第一位。
4.设置后不会即刻生效,需要下一次登录时才会生效。

18.4 root用户

ubuntu安装后,默认是普通用户,这时候要获得权限就得:

装的过程会让你输入用户名密码:这个密码是普通用户的

su root

sudu passwd root

123

1.sudo

2.su root

设置root用户的密码并使

1.sudo passwd

18.5 Ubuntu使用python

ubuntu安装成功后,默认会带上python2 和 python3,无需另外安装

ubuntu下可以安装各种python的ide环境,包括pycharm

https://baijiahao.baidu.com/s?id=1622347860160507809&wfr=spider&for=pc

18.6 apt软件管理工具

apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt

命令可用于软件包的安装、删除、清理等,

apt软件相关命令

sudo apt-get update 更新源  (换源之后要让源生效,就使用这个指令)
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache show package名    获取包的相关信息,如说明、大小、版本等
sudo apt-get source package 下载该包的源代码 (基本不用)

----------------------以上命令最为常用---------------------------

sudo apt-cache search package 搜索软件包
sudo apt-get install package --reinstall    重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包sudo apt-cache rdepends package 查看该包被哪些包依赖

更换镜像源

清华开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/

ubuntu的软件源配置文件是/ect/apt/source.list

1.备份/ect/apt/source.list

mv /ect/apt/source.list /ect/apt/source.list.backup

若权限不够,切换root用户,或使用sudo

2.替换/ect/apt/source.list内容

1.vim /ect/apt/source.list
2.写入清华镜像源文件内容

小案例

1.apt-get remove vim
2.apt-get install vim
3.apt-cache show vim

18.7 ssh远程登录

和 CentOS 不一样,Ubuntu 默认没有安装
SSHD 服务,因此需要安装

18.7.1 安装

apt-get install openssh-server
service sshd restart

查看监听状态:
netstat -nap | more

此时xshell就可以连接了

18.7.2 其它

openssh-sever会安装客户端和服务端,
所以ubuntu在此时也可以连接其它有sshd服务的机器

基本语法:
ssh 用户名@IP
例如:ssh [email protected]
使用 ssh 访问,如访问出现错误。可查看是否有该文件 ~/.ssh/known_ssh  尝试删除该文件解决。
登出命令:exit 或者 logout

原文地址:https://www.cnblogs.com/michealjy/p/12194417.html

时间: 2024-11-05 16:05:25

学linux,这篇就够了的相关文章

学SpringBoot一篇就够了

1.SpringBoot概述 Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面.如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题.每个子项目都有一定的学习曲线.开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的

学Redis这篇就够了

Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储 Redis 支持数据的备份,即 master - slave 模式的数据备份 Red

十天学Linux内核之第十天---总结篇(kconfig和Makefile &amp; 讲不出再见)

原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的话少,没办法煽情了,,,,,,,冬天的风,吹得伤怀,倒叙往事,褪成空白~学校的人越来越少了,就像那年我们小年之后再回家的场景一样,到处荒芜,然而我们的激情却不褪去,依然狂躁在实验室凌晨两点半的星空里,也许今天又会是这样的一年,不一样的是身边的人变成学弟学妹了,而我们几个大三老家伙依然在,为自己喜欢的事情,为

开发人员学Linux之终结篇:大型系统开发经验谈

1.前言这篇文章来源于我的一个ppt,而这个ppt是源于一个朋友的一次邀请,朋友邀请我为一个公司做一堂大约2小时的技术讲座,我选定的方向是如何开发一个大型系统,在这里我对大型系统的定义为日均PV在千万级以上,而京东和淘宝这类则属于巨型系统了.因此在本篇中讲述的都是基于一些开源免费的技术实现,至于那些通过F5硬件加速.DNS来实现负载均衡.CDN加速等需要花钱购买的技术或者服务则不再本篇介绍范围之类.本来此篇是作为<开发人员学Linux>系列的终结篇最后出现的,但是考虑到在此过程中我可能会由于时

跟着阿里p7一起学java高并发 - 第18天:玩转java线程池,这一篇就够了

java中的线程池,这一篇就够了 java高并发系列第18篇文章. 本文主要内容 什么是线程池 线程池实现原理 线程池中常见的各种队列 自定义线程创建的工厂 常见的饱和策略 自定义饱和策略 线程池中两种关闭方法有何不同 扩展线程池 合理地配置线程池 线程池中线程数量的配置 什么是线程池 大家用jdbc操作过数据库应该知道,操作数据库需要和数据库建立连接,拿到连接之后才能操作数据库,用完之后销毁.数据库连接的创建和销毁其实是比较耗时的,真正和业务相关的操作耗时是比较短的.每个数据库操作之前都需要创

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

前言表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了.要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了.但是在本篇只讲述如

开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

1.前言上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候不是所有时候都能得到满足,有没有依赖于机制而不是人来保证代码质量呢,我们知道计算机的缺点也是优点之一就是可以忠实执行指令.答案是有的,那就是SonarQube,其官方网址为:https://www.sonarqube.org/,目前最新版本为6.4.SonarQube是一个开源平台,用于管理源代码的质

《跟老男孩学Linux运维之shell编程实战》-第二章 shell变量的核心基础

这篇文章主要讲解 shell变量的核心基础. 1.变量是什么? 变量是什么?可能有好多人不明白,简单地说,变量就是用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其他的内容. 变量的赋值方式为:先写变量名称,紧接着是"="这个字符,最后是值,中间无任何空格(变量的内容一般要加双引号,以防止出错,特别是当值里的内容之间有空格时). 如何打印变量?通过echo命令加上$变量名 打印变量的值: 例如:定义变量和打印变量: [[e

跟鸟哥学Linux之——学习总结

整个下来看<鸟哥的Linux私房菜--基础篇>学习了很多的知识,从基本的Linux初步认识,到一些文件目录的认识和操作,一些基本命令的使用,最后初步认识了Linux中进程的操作和控制方法.现阶段对Linux基础的认识和学习就这些,下边是学习下来的博客总结: 1.跟鸟哥学Linux之--Linux规划!! 2.跟鸟哥学Linux之--从磁盘分区到文件系统 3.跟鸟哥学Linux之--浅谈文件权限 4.跟鸟哥学Linux之--对文件与目录操作命令汇总 5.跟鸟哥学Linux之--bash shel