大数据生态系统 修仙之道 Linux Blog

本文深入探讨Linux系统管理的关键技术,涵盖用户与组管理、权限设置、文件操作、进程管理等核心内容,旨在帮助读者掌握高效运维Linux系统的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大数据生态系统 修仙之道 Linux Blog

@(2019-01-03)[Docs Language:简体中文 & English|Programing Language:Linux|Website:www.geekparkhub.com|OpenSource|GeekDeveloper:JEEP-711|Github:github.com/geekparkhub|Gitee:gitee.com/geekparkhub]

Alt text

  • 极客实验室是极客国际公园旗下为未来而构建的极客社区;
  • 我们正在构建一个活跃的小众社区,汇聚众多优秀开发者与设计师;
  • 关注极具创新精神的前沿技术&分享交流&项目合作机会等互联网行业服务;
  • Open开放 · Creation创想 | OpenSource开放成就梦想 GeekParkHub共建前所未见!
  • Future Vision : Establishment of the Geek Foundation;
  • **GeekParkHub GithubHome: **https://github.com/geekparkhub
  • **GeekParkHub GiteeHome: **https://gitee.com/geekparkhub
  • 欢迎贡献各领域开源野生Blog&笔记&文章&片段&分享&创想&OpenSource Project&Code&Code Review
  • ??????????? issues: geekparkhub.github.io/issues ???????????

1. linux 简介

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统. —— 维基百科

2. linux 目录结构

linux的文件目是采用层级式的树状目录结构,linux目录中有且只有一个根目录
linux各个目录存放内容都是规范性的,不可随意放置文件
linux是以文件的形式管理设备,因此在linux生态系统中,一切皆为文件

/ 根目录
/root -- 该目录为系统管理员,也称为超级权限者的用户主目录
/bin -- 存放最经常使用的指令
/sbin -- SuperUser,存放系统管理员使用的系统管理程序
/boot -- 存放启动linux及使用的一些核心文件,包括一些连接文件以及镜像文件
/dev -- 类似于windows的设备管理器,把所有的硬件用文件的形式储存
/etc -- 所有的系统管理所需要的配置文件和子目录
/opt -- 给主机额外安装软件的目录,如安装MYSQL数据库就可以存放在此目录
/tmp -- 此目录是用来存放一些临时文件
/sys --  此目录是linux2.6内核的一个很大的变化,该目录安装了2.6内核中新出现的一个文件
/srv -- service缩写,该目录存放一些服务启动后需要提取的数据
/proc -- 此目录是虚拟目录,它是系统内存的映射,访问此目录来获取系统信息
/home -- 存放普通用户的主目录,每个账户都会有自己的home目录,一般该目录名是以账户名命名
/var -- 此目录存放着不断扩充的文件,习惯将经常被修改的目录存放在这里,包括各种日志文件
/lib -- 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的dll文件,几乎所有的应用程序都需要用到这些共享库
/lost+founf -- 此目录一般情况下为空,当系统非法关机,这里就会存放一些文件
/usr -- 尤为重要的目录,用户的很多应用程序和文件都存放在此目录,类似于windows下的programfiles目录
/usr/local -- 另一个给主机额外安装软件的安装目录,一般是通过编译源码方式安装程序
/media -- linux系统会自动识别一些设备,例如U盘,光驱等等,当失败后,linux会把识别的设备挂载到此目录
/mnt -- 系统提供此目录是为了让用户临时挂载其他文件系统,可以将外部存储挂载在/mnt上,然后进入此目录就可以查看内容
/selinux[Security-Enhanced Linux] -- SElinux是一种安全子系统,它能控制程序只能访问特定文件

3. 远程登录 linux客户端

通过**ifconfig**命令获取linuxIP地址
通过finalshell ssh远程登录并连接此服务器,如连接失败需要检查linux是否开启ssd服务端口
IPaddr+22端口+username+password即可成功远程连接并可以使用指令来操作linux系统

4. linux Vi与Vim编辑器

所有的linux系统都会内建vi文本编辑器
Vim具有程序编辑的能力,可以看做是vi的增强版,可以主动的以字体颜色辨别语法的正确性,
方便程序设计,代码补全,编译及错误跳转等方便编程的功能特别丰富,在开发者中被广泛使用

常用三种模式
正常模式

当vim打开一个档案就直接进入一般模式(默认模式),在这个模式中,可以使用上下左右按键来移动光标,
可以使用删除字符或删除整行来处理文档内容,也可以使用复制粘贴来处理文件数据

插入模式(编辑模式)

i,I,o,O,a,A,r,**R**等任一个字母之后才会进入编辑模式,一般来说按i键即可

命令行模式

在此模式中,可以提供相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作则是此模式的达成

vi与vim模式相互切换

在命令行下 #vim xxx
从一般正常模式下,快捷键i或a进入 插入/编辑模式,快捷键esc返回一般正常模式
从一般正常模式下,快捷键:或/进入 命令模式,在命令行下,:wp表示写入并退出,:q既是不保存退出,
:q!既是强制性退出,快捷键esc返回一般正常模式

vi与vim快捷键

1.拷当前行快捷键**yy**,拷贝当前行向下5行并粘贴,快捷键5yy,p
2.删除当前行快捷键dd,删除当前行向下5行,快捷键5dd
3.在文件中查找某个单词,(切换命令行下 快捷键/关键字,回车查找,输入n就是查找下一个)
4.设置文件行号,取消文件行号,(切换命令行下 快捷键 :set nu:set nonu)
5.在正常模式下,编辑/etc/profile文件,使用快捷键到底部文档的最末行快捷键G和最首行快捷键gg
6.在正常模式下,在一个文件中输入"hello",然后又撤销这个动作 快捷键u
7.编辑/etc/profile文件,并将光标移动到20行 快捷键shift+g
先切换命令行模式下,显示行号,:set nu,然后esc返回正常模式,然后输入20,并shift+g即可

5. linux 关机&重启命令

shutdown -h now 立即进行关机
shutdown -h 1 一分钟后关机
shutdown -r now 重新启动计算机
halt 关机
reboot 重新启动计算机
sync 把内存数据同步到磁盘

注意细节:当关机或重启时候,都应该先执行sync指令,把内存的数据写入磁盘,放置数据丢失.

用户登录和注销
登录时尽量少使用root账号,因为是系统管理员,有着最大权限,避免操作失误,
可以利用普通管理员,登录后再用 su - username 命令来切换成系统管理员身份
在提示符下输入 **logout**即可注销用户,logout注销指令在图形化界面运行级别无效.

6. linux 用户与组管理

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

用户管理

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

添加用户指令
useradd username

添加一个用户为jeep711

useradd jeep711

当创建用户以后,会自动创建和用户同名的home目录,也可以通过useradd-d 指定目录新的用户名,给新创建的用户指定home目录

创建指定目录下的用户命令
useradd -d /home/test testuser
指定用户修改密码
passwd username
删除用户
userdel username

删除用户,但保留用户home目录 userdel username
删除用户以及删除用户主目录 userdel -r username

查询用户信息指令
id username
切换用户

在操作linux,如果当前用户权限不够,可以通过su -指令,切换到高权限用户, 比如root

su - root

从权限高的用户切换到权限低的用户,不需要输入密码,反之需要,当需要返回到原来用户时,使用exit指令

查看当前用户/登录用户

whoamwho am i

用户组

类似于角色,系统可以对共性的多用户进行统一管理

新增组指令
groupadd groupname
删除组指令
groupdel groupname
新增用户指定组指令
useradd -g groupname username
修改用户组指令
usermod -g groupname username
用户和组的相关文件

**/etc/passwd**文件
用户的配置文件,记录用户的各种信息
每行含义: 用户名:口令:用户标识号:组织标识号:注释性描述:主目录:登录shell

**/etc/shadow**文件
口令的配置文件
每行含义: 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

**/etc/group**文件
组的配置文件,记录linux包含组的信息
每行含义: 组名:口令:组标识号:组内用户列表

7. linux 实用指令

指定运行级别

运行级别说明:
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形化界面
6:系统重启
常用的级别是3和5,要修改默认运行级别顺序可以更改配置文件
/etc/inittab的id:5:initdefault:这一行中的数字
命令:init[012356]
如何找回root密码,进入单用户模式,进行修改密码,因单用户模式,root不需要密码,开机按住回车键,选择第二选项即可

帮助指令

当我们对某一个指令不熟悉时,可以使用linux提供的帮助指令来了解指令使用
man [指令或配置文件] (功能描述,获取帮助信息)
**help**指令 (功能描述,获得shell内置命令帮助信息)

文件目录类

pwd指令
pwd (功能描述:显示当前工作目录的绝对路径)
ls指令
ls [选项] [目录或文件]

常用选项
-a 显示当前目录所有文件和目录,包括隐藏
-i 以列表方式显示信息
cd指令
cd [参数] (功能描述:切换到指定目录)
mkdir指令
mkdir指令用于创建目录
mkdri [选项] 创建目录名称
-p 创建多级目录
rmdir指令
删除目录
rmdir指令 删除空目录
touch指令
touch指令创建空文件
touch filename
```
#### cp指令
```
cd指令拷贝文件到指定目录
cp 选项 source dest

常用选项
-r 递归复制整个文件
cp aa/a.txt bb/
cp -r aa/ bb/
反斜杠 \ 强制性覆盖
```
#### rm指令
```
rm 指令移除文件或目录
rm 选项 deletefilename
-r 递归删除整个文件夹
-f 强制删除不提示
```
#### mv指令
```
移动文件与文件重命名
mv oldNameFile newNanmeFile 重命名文件指令
mv /temp/movefile/tagrgetFloder 移动文件指令
```
#### cat指令
```
cat 查看文件内容
cat 选项 filename
-n 显示行号
cat 只能浏览文件,但不能修改文件,为了浏览方便,一般会带上 管道命令 | more
```
#### more指令
```
more指令是一个基于VI编辑器的文本过滤器,它以全屏方式按分页显示文本文件内容
more指令中内置了若干个快捷键,详情说明如下
more filename
空格键 表示下翻页
回车键 表示下翻一行
q 表示立即离开more,不下显示该文件内容
ctrl+f 向下滚动一屏
ctrl+b 返回上一屏
= 输入当前行的行号
:f 输出文件名和当前行号
```
#### less指令
```
less指令用来分屏查看文件内容,功能与more指令相似,但是比more指令更强大,
支持各种显示终端,less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,
而是根据显示需要加载内容,对于显示大型文件具有较高的效率
less filename
空格键 向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
/关键字 向下搜索关键字,小写n 向下查找,大写N 向上查找
?关键字 向上搜寻关键字,小写n 向上查找,大写N 向下查找
q 离开less程序
```
#### >输出重定向指令(会将原来内容覆盖) 和 >>追加指令
```
ls-l>filename 列表的内容写入文件a.txt(覆写)
ls-al>>filename 列表的内容追加到文件aa.txt的末尾
cat filename1 >filename2 将文件1内容覆盖到文件2
echo "contents" >> filename
将日历信息追加到指定文件中 cal >> /home/a.txt
```
#### echo指令
```
echo指令输出内容到控制台
echo 选项 输出内容
echo $PATH 输出linux环境变量
```
#### head指令
```
head指令用于显示文件的开头部分内容,默情况下head指令显示文件的前10行内容
haed filen 查看文件前10行内容
head -n 5filena 查看文件头5行内容,5可以自定义
```
#### tail指令
```
tail指令输出文件中尾部部分,默认情况下tail指令显示文件的后10行内容
tail filename 查看文件后10行内容
tail -n 5 filename 查看文件后5行内容
tali -f filename 实时追踪该文档的所以更新
```
#### ln指令

软连接指令也称作符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
ln -s 原文件或目录 软连接名称 (功能描述:给原文件创建一个软连接)
当时有pwd指令查看目录时,仍然看到的是软连接所在的目录

#### history指令

查看已经执行过历史命令,也可以执行历史命令
history
查询历史命令,想再次执行某一条命令,可以使用 ! id 感叹号

#### 时间日期类相关指令

date指令 显示当前日期
date 显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前哪一天
date “+%Y-%m-%d %H:%M:%S” 显示年月日时分秒
设置日期指令
date -s 字符串时间

#### cal指令

cal 查看日历指令 不加选项,显示本月日历
cal 2020 显示2020年日历


#### 搜索查找类

find指令
find指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端
find 搜索范围 选项
-name 按照指定文件名称查找模式查找文件
-user 查找属于指定用户名所有文件
-size 按照指定文件大小查找文件
超找整个linux系统下大于20M文件 (+n 大于 -n小于 n等于)
find / -size +20M

#### locate指令

locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径
的locate数据库实现快速定位给定的文件,locate指令无需遍历整个文件系统,查询速度快
为了保证查询结果的准确度,管理员必须定期更新locate时刻
初始化先执行 updatedb指令在执行查询指令
locate filename
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

#### grep指令 和 管道符号 |

grep过滤查找,管道符|,表示将前一个命令的处理结果输出传递给后面的命令处理
grep 选项 查找内容 源文件
-n 显示匹配行及行号
-i 忽略字母大小写
查找文件中含有55252关键字以及行号大小写并打印控制台
cat Hello.java | grep -ni 55252

#### 压缩与解压指令
##### gzip filename 用于压缩文件指令,只能将文件压缩为*.gz文件

gunzip filename.gz 用于解压指令
zip/uzip指令
zip 指令用压缩文件,uzip用于解压文件
zip 选项 filename.zip 将要压缩的内容,压缩文件和目录命令
-r 递归压缩,压缩目录
unzip 选项 filename.zip 解压文件
-d<目录> 指定解压后文件的存放目录

##### tar指令

tar指令是打包指令,最后打包的文件是.targz文件
tar 选项 filename.tar.gz 打包目录,压缩后文件格式tar.gz
-c 产生.tar打包文件
-v 显示详情信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压.tar文件
tar -zvcf a.tar.z a.txt b.txt 将a.txtb.txt打包为a.tar.gz文件指令
tar -zxvf a.tar.gz 将a.tar.gz解压


#### cut指令 (重点-大数据开发者看家本领)
> 功能:cut工作就是剪,具体就是在文件中负责剪切数据使用,cut指令从文件的每一行剪切字节/字符/字段并将这些内容输出
> 基本语法 默认分隔符是制表符
**`cut 选项参数 filename`**
**`-f`** 列号,提取第几列
**`-d`** 分隔符,按照指定分隔符分割列
##### cut指令应用案例
###### 选取系统PATH变量值,第二个:冒号开始后的所有路径

echo $PATH | cut -d : -f 3-

效果如下
[root@servicehub]# echo $PATH | cut -d : -f 3-
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

###### 获取IP地址并截取IP地址

ifconfig eth0 | grep “inet addr” | cut -d : -f 3 | cut -d " " -f 1

#### sed指令 (重点-大数据开发者看家本领)
> sed是一种流编辑器,它一次处理一行内容,处理时,把当前处理的行储存在临时缓冲区中,称为模式空间
> 接着用sed指令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样一直不断重复,
> 直至文件末尾,文件内容并没有改变,除非使用重定向储存输出
##### 基本语法
**`sed 选项参数 命令参数 filename`**
**`-e`** 直接在指令模式上进行sed动作编辑
命令参数
**`a`** 新增 a的后面可以拼接字符串,在一行出现
**`d`** 删除
**`s`** 查找并替换

##### sed指令应用案例
在sed.txt文件内容基础上将ssssss加入到到内容第二行并打印

sed “2a ssssss” sed.txt


#### awk指令 (重点-大数据开发者看家本领)
> 一个强大的文本分析工具,把文件逐行读写,一空格为默认分隔符将每行切片,切开的部分在进行分析处理
##### 基本用法
**`awk 选项参数 'pattern1{action1} pattern2{action2}...' filename`**
**`pattern`** 表示AWK在数据中查找内容,就是匹配模式
**`action`** 在找到匹配内容时所执行的一系列命令
##### 选项参数
**`-F`** 指定输入文件拆分隔符
**`-v`** 赋值一个用户定义变量

#### sort指令 (重点-大数据开发者看家本领)
> 将文件进行排序,并将排序结果标准输出
##### sort 选项 参数
**`-n`** 依照数值大小排序
**`-r`** 以倒序排序
**`-t`** 设置排序是所用的分隔符
**`-k`** 指定需要排序的列

## 8. linux 组管理与权限管理
> linux组的基本介绍
在linux中每个用户必须属于一个组,不能独立于组外,在linux中每个文件有所有者,所在组,其他组的概念

`所有者` | `所在组` | `其他组` | `改变用户所在的组`

### 文件是目录的所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
#### 查看文件所有者

ls -ahl

#### 修改文件所有者

chown username filename

#### 组的创建

groupadd groupname

#### 创建monster组指令

groupadd monster

#### 创建fox用户并添加到monster组中

useradd -g monster fox

### 文件/目录所在组
> 当某个用户创建了一个文件之后,这个文件的所在组就是该用户所在的组
#### 查看文件/目录所在组

ls -ahl

#### 修改文件所在组

chgrp groupname filename

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

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

usermod -g groupname username
usermod -d 目录名 username 改变该用户登录初始化目录


## 9. linux 权限基本介绍
### 0-9位说明
第0位确定文件类型(`d`,`-`,`l`,`c`,`b`)
  • 普通文件
    d 目录
    l 软连接
    c 字符设备
    b 块文件
第1-3位确定所有者(该文件的所有者)拥有该文件的权限 -- User
第4-6位确认所属组(同用户组的)拥有该文件的权限 -- Group
第7-9位确认其他组用户拥有该文件的权限 -- Other

### rwx权限详情
**`r`** 代表可读(read) 可以读取查看
**`w`** 代表可写(write) 可以修改,但不代表可以删除该文件,删除一个文件的前提是对文件所在的目录有写权限才能删除文件
**`x`** 代表可执行(execute) 可以被执行

#### 文件及目录权限案例

[geek-developer@servicehub /]$ ls -l
total 98
dr-xr-xr-x. 2 root root 4096 Jan 4 03:33 bin
dr-xr-xr-x. 5 root root 1024 Jan 2 03:20 boot
drwxr-xr-x. 18 root root 3740 Jan 19 18:15 dev
drwxr-xr-x. 102 root root 12288 Jan 19 18:15 etc
drwxr-xr-x. 9 root root 4096 Jan 9 19:07 home
dr-xr-xr-x. 10 root root 4096 Jan 2 03:15 lib
dr-xr-xr-x. 9 root root 12288 Jan 2 04:24 lib64
drwx------. 2 root root 16384 Jan 2 03:12 lost+found
drwxr-xr-x. 2 root root 4096 Jan 2 03:29 media
drwxr-xr-x. 3 root root 4096 Jan 2 03:20 mnt
drwxr-xr-x. 7 root root 4096 Jan 17 17:23 opt
dr-xr-xr-x. 177 root root 0 Jan 19 18:15 proc
dr-xr-x—. 31 root root 4096 Jan 19 18:16 root
dr-xr-xr-x. 2 root root 12288 Jan 2 04:24 sbin
drwxr-xr-x. 7 root root 0 Jan 19 18:15 selinux
drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv
drwxr-xr-x. 13 root root 0 Jan 19 18:15 sys
drwxrwxrwt. 57 root root 4096 Jan 19 19:45 tmp
drwxr-xr-x. 13 root root 4096 Jan 2 03:13 usr
drwxr-xr-x. 21 root root 4096 Jan 2 03:17 var

#### 文件目录权限表
| 文件类型      |    属主权限 |   属组权限   | 其他用户权限  |
| :-------- | --------:| :------: | :------: |
|  0    |  1   2   3 |  4  5  6  |  7  8  9  |
|  d     |   r   w   x |  r-x  |  r-x  |
|  目录文件     |   读 写 执行 |  读 写 执行  |  读 写 执行  |

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

> 10个字符确定不同用户能对文件做什么
第一个字符代表文件类型 文件- 目录d 链接 l
其余字符每3个一组(rwx) 读r 写w 执行x
第一组rwx 文件拥有者的权限是读写执行
第二组rw- 与文件拥有者同一组的用户权限是读写但不能执行
第三组r-- 不与文件拥有者同组的其他用户的权限是读不能写和执行

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

> 1 文件 硬连接数和目录 子目录
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096
Feb 2 09:39 最后修改日期
abc 文件名

#### chmod 修改权限指令
通过chmod指令,可以修改文件或目录的权限

第一种方式 **`+`**,**`-`**,**`=`** 变更权限

**`u 所有者` | `g 所有组` | `o 其他人` | `a 所有人(u,g,o的总和)`**

chmod u=rwx,g=rx,o=x 目录文件名
chmod o+w 目录文件名
chmod a-x 目录文件名

##### 应用案例
###### 给helloworld文件的所有者读写执行权限,给所在组读执行权限,给其他组读执行权限

chmod u=rwx,g=rx,o=rx helloworld

###### 给helloworld文件所有者移除执行权限,增加组的写权限

chmod u-x,g+w helloworld

###### 给helloworld文件所以用户添加读的权限

chmod a+r helloworld


> 第二种方式 通过数字变更权限
权限公式 r=4 w=2 x=1 rwx=4+2+1=7

chmod u=rwx,g=rx,o=x 目录文件名


###### 将/home/helloworld.txt文件的权限修改成 rwx r-x r-x,使用给数字的方式实现

rwx = 4+2+1=7
r-x = 4+1=5
r-x = 4+1=5
chmod 755/home/helloworld.txt


###### 修改文件所以者

chown tom helloworld.txt

###### 将home/kkk目录下的文件和目录的所有者修改成tom

chown -R tom kkk/


###### 修改文件所在组
chgrp 新组 文件名 改变文件的所有组

###### 将home/abc.txt文件所在组修改iuser组

chgrp iuser /home/abc.txt


###### 将home/kkk目录下的所有文件和目录的所在组修改成iuser组

chgrp -R iuser /home/kkk


## 10. linux 定时任务调度
> 任务调度,是指系统在某个时间执行的特定命名或程序
### 任务调度分类
> 1.系统工作,有些重要的工作必须周而复始的执行,如病毒扫描等
> 2.个别一用户工作,个别用户工作可能希望执行某些程序,比如对mysql数据库备份
> 3..........

### crontab 指令

crontab 指令
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务

设置任务调度文件 /etc/crontab
设置个人任务调度,执行crontab -e命令
输入任务调度文件,/1*** ls -l /etc/ >> out.txt
每小时每分钟执行 ls -l /ect/ >> /tmp/out.txt

### 5个占位符说明
> 第一个**`*`** : 表示一小时当中的第几分钟 0-59
第二个**`*`** : 表示一天当中的第几小时 0-23
第三个**`*`** : 表示一个月当中的第几天 1-31
第四个**`*`** : 表示一年当中的第几个月 1-12
第五个**`*`** : 表示一周当中的星期几 0-7(0和7都代表星期日)

> 特殊符号说明
**`*`** : 代表任何时间,比如第一个*就代表一个小时中每分钟都执行一次
**`,`** : 代表不连续时间,比如0,8,12,16***命令,就代表在每天的8点,12点,16点都执行一次命令
**`-`** : 代表连续的时间范围,比如*05**1-6命令,代表在周一到周六的凌晨5点执行命名
**`*/n`** : 代表每隔多久执行一次,不如*/10****命令,代表每隔10分钟就执行一遍命名

> 特定时间执行
**`4552***`** : 命令 在22点45分执行命令
**`017**1`** : 命令 每周一的17点执行命令
**`051,1,15**`** : 命令 每月一号和15号凌晨5点执行命令
**`404**1-5`** : 命令 每周一到周五的流程四点四十分执行命令
**`*/104***`** : 命令 每天的凌晨四点,每隔10分钟执行一次命令
**`001,15*1`** : 命令 每月一号和15号,每周一凌晨执行命令,注:星期几和几号最好不要同时出现,因为它们定义
都是天,非常容易让管理员混乱

### 任务调度实用指令

crontab -r 终止任务调度指令
crontab -l 列出发当前任务调度指令
service crontab restart 重启任务调度指令


## 11. linux 磁盘分区&挂载
### 分区基础知识
> 分区方式
> 
> **mdr分区**
> 最多支持四个分区
> 系统只能安装在主分区
> 扩展分区要占一个主分区
> MBR最大只支持2TB,但拥有最好的兼容性
> 
> **gtp分区**
> 支持无线多个主分区(但操作系统可能限制,比如windows下最多128个分区)
> 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
> windows7 64位以后版本支持gtp

### Linux分区
> 原理介绍
> 
> 对于linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每一个分区都是用来组成整个文件系统的一部分.
> 
> linux采用一种叫载入的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时候要载入的是一个分区将使它的储存空间在一个目录下获得

### 硬盘说明
> linux硬盘分`IDE`硬盘和`SCSI`硬盘,目前基本上是`SCSI`硬盘
> 对于`IDE`硬盘,驱动器标识符为`hdx~`,其中`hd`表明分区所在设备的类型,这里是指`IDE`硬盘,`x`为盘号(`a`为基本盘,`b`为基本从属盘,`c`为辅助盘,`d`为辅助从属盘),`~`代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区,;例如`hda3`表示为第一个`IDE`盘上的第三个主分区或扩展分区,`hdb2`表示为第二个`IDE`硬盘上的第二个主分区或扩展区
> 对于`SCSI`硬盘则标识为`sdx~`,`SCSI`硬盘是用`sd`来表示分区所在设备的类型,其余则和IDE硬盘表示方法一样

### 查看分区和挂载情况指令

lsblk -f

### 挂载案例

虚拟机增加硬盘
虚拟机添加硬盘
分区 fdisk /dev/sdb
格式化 mkfs -t ext4 /dev/sdb1
挂载 先创建一个 /home/newdisk文件,后挂载 mount /dev/sdb1 /home/newdisk
设置自动挂载 vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
mount -a 自动挂载指令
umount /dev/sdb1 卸载sdb1硬盘

### 磁盘情况查询
#### 查询系统整体磁盘使用情况指令

df -h

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

du -h /目录名称

#### 选项参数详情

-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细同时,增加汇总值


### 磁盘情况 工作实用指令
#### 统计/home文件夹下文件个数

ls -l /home | grep “^-” | wc -l

#### 统计/home文件夹下目录个数

ls -l /home | grep “^d” | wc -l

#### 统计/home文件夹下文件的个数,包括子文件夹

ls -lR /home | grep “^-” | wc -l

#### 统计文件夹下目录的个数,包括子文件夹

ls -lR /home | grep “^d” | wc -l

#### 以树状显示目录结构

tree指令
如提示comand not found,需要安装tree,安装指令 yum install tree


## 12. linux 网络配置
> 目前VMwareWorkstatio虚拟机采用的网络模式是NAT模式

### linux网络环境配置

#### 自动获取
缺点 : linux启动后自动获取IP,缺点是每次自动获取IP地址都会更变

#### 指定固定IP
直接修改配置文件来指定IP,并可以连接到外网(推荐)
要求:将IP地址配置的静态的,IP地址为**`192.168.184.130`**
0.当前需要是root用户,才能有rwx权限
1.编辑 **`vim /etc/sysconfig/network-scripts/ifcfg-eth0`**
2.输入**`i`**,进入编辑模式
3.开始输入Code

IPADDR=192.168.184.130 指定IP
GATEWAY=192.168.184.2 网关
DNS1=192.168.184.2 DNS
BOOTPROTO=“static” 更改为静态模式


4.写入设置并退出

编写Code后,按Esc按键,在输入:wq 写入即可

5.重启网络服务

service network restart


### 修改主机名
hostname 修改linux主机映射文件
0.当前需要是root用户,才能有rwx权限
1.**`vim /etc/sysconfig/network`**
2.输入**`i`**,进入编辑模式
3.开始输入Code

NETWORKING=yes
HOSTNAME=servicehub

4.写入设置并退出

编写Code后,按Esc按键,在输入:wq 写入即可

5.编辑主机映射 **`vim /etc/hosts`**

127.0.0.1 localhost servicehub localhost4 localhost4.localdomain4
::1 localhost servicehub localhost6 localhost6.localdomain6

6.写入设置并退出

编写Code后,按Esc按键,在输入:wq 写入即可


### 修改注意事项
> 主机名称不能带有下划线
修改**`/etc/hosts`** 增加IP和主机映射
**`192.168.1.100` `servicehub`**
并重启设备,即可生效
如果希望windows也可以通关主机名连接centos,进入C:\Windows\System32\
drivrs\etc\hosts 192.168.2.100 servicehub

## 13. linux 进程管理(重点)
### 进程的基本介绍
> 在linux中,每个执行的程序都会称为一个进程,每一个进程都会分配一个ID号
> 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子个进程,例如www服务
> 每一个进程可以以两种方式存在,前台和后台(守护进程),所谓前台进程就是用户目前在图形化界面可以进行操作,后台进程则是实际在操作,但是由于屏幕无法看到进程,通常使用后台方式执行
> 一般系统的服务都是以后台进程方式存在,而且都会常驻在系统中,直到关机才结束
### 显示系统执行进程
**`ps`** 指令用来查看目前系统中,有哪些正在执行,以及它们执行状况,可以不加任何参数

效果如下

[root@servicehub]# ps
PID TTY TIME CMD
2441 pts/0 00:00:00 su
2447 pts/0 00:00:00 bash
2515 pts/0 00:00:39 java
3532 pts/0 00:00:00 ps

> 参数说明
**`System V`**展示风格
**`USER`** 用户名称
**`PID`** 进程号
**`%CPU`** 进程占用CPU的百分比
**`%MEM`** 进程占用物理内存的百分比
**`VSZ`** 进程占用的虚拟内存大小(单位: `kb`)
**`RSS`**进程占用物理内存大小(单位: `kb`)
**`TT`** 终端名称缩写
**`STA`** 进程状态,其中`S-`睡眠,`s-`表示该进程会话的先导进程,`N-`表示进程拥有比普通优先级更低的优先级
,`R-`正在运行,`D-`短暂等待,`Z-`僵死进程,`T-`被跟踪或者停止等
**`STARTED`** 进程启用时间
**`TIME`** CPU时间,即进程使用CPU时间
**`COMMAND`** 启用进程所用的命令和参数,如果过长会被截断显示

### 查询指定进程指令

ps -aux | grep sshd

### 查询父进程指令

ps -ef | more

### 以用户格式显示进程信息指令

ps -a ps -u

### 显示后台进程运行参数指令

ps -x


### 终止进程 kill 和 lillall
> 若是某一个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,使用kill命令来完成此执行
> **``kill  选项 进程号 (通过进程号结束进程)``**
> 
> **``killall 进程名称 (通过进程名称结束进程,也支持通配符,系统因负载过大而变得很慢,则可时使用)``**
> 
> **`-9`** 表示强迫进程立即停止
> 
> 查看进程树 (初始化使用,需要执行安装tree,yum install tree)
> **`pstree 选项 可以直观查看进程信息`**
> **`-p`** 显示进程PID
> **`-u`**显示进程所属用户

### linux service服务管理
> 服务本质就是进程,但是是运行在后台,通常都会监听某个端口,等待其他程序的请求,比如mysql,sshd,防火墙等,因此我们又称为守护进程,是linux中非常重要的知识点
**`service 服务名 start | stop | restart | reload | status`**
contos7.0不再使用**`service`**指令,而是使用 **`systectl`**查看当前防火墙状况,关闭防火墙和重启防火墙
telnet 192.168.184.130 22 监听端口

#### chkcnfig 指令
> 通过chkconfig命令可以给各个运行级别设置自启动或关闭
##### 查看指定服务 

chkconfig --list | grep xxx

##### 查看指定服务

chkconfig 服务名 --list

##### 指定某个服务修改级别并设置自启动或关闭

chkconfig --level 5 服务名 on/off

#### 服务管理应用案例
##### 请显示当前系统所有服务各个运行级别运行状态

chkconfig --list

##### 请查看sshd服务运行状态

service ssha status

##### 请将ssdh服务在运行级别5下设置为不自启

chkconfig --level sshd 5 off

##### 当运行级别为5时,关闭防火墙

chkconfig --level iptables 5 off

##### 在所有运行级别下,关闭防火墙

chkconfig iptables off

##### 在所以运行级别下,开启防火墙

chkconfig iptables on
注意:chkconfig重新设置服务后自启和关闭,需要重启机器reboot才能生效

### 动态监控进程
**`top`**与**`ps`**指令很相似,它们都用来显示正在运行的进程
**`top`**与**`ps`**最大的不同之处在于,**`top在执行一段时间可以更新正在运行的进程`**

#### top 选项参数
**`-d`** 指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行
**`-i`** 是top不显示任何闲置或僵死进程
**`-p`** 通过指定监控进程ID来仅仅监控某个进程状态

#### 监控进程互动指令
**`P`** 以CPU使用率排序,默认是此项
**`M`** 以内存使用率排序
**`N`** 以PID排序
**`q`** 退出top

#### 动态监控进程应用案例
##### 监听特定用户

top指令 加u 输入用户名即可

##### 终止指定进程

top指令 加k 输入PID即可

##### 指定系统状态更新时间(每隔10秒自动更新)

top -d 10 指令即可


### 监控网络状态
#### netstat 指令
#### netstat参数说明
**`-an`** 按一定顺序排列输出
**`-p`** 显示哪个进程在调用
#### 查询服务名为sshd服务信息

netstat -anp | grep sshd


## 14. linux RPM&YUM软件包管理
> 一种用于互联网下载包的打包及安装工具,它包含在某些linux分发版中,它生成具有.RPM扩展名的文件,RPM(RedHat Package Manager)缩写,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的.
> 
> Linux分发版都采用(suse,redhat,centos等等),可以算是公认的行业标准

### RPM包管理
#### rpm包的简单查询指令

查询已安装的rpm列表 rpm -qa | grep xxx
rpm包其他查询指令
rpm -qa 查询所有安装rpm软件包
rpm -qa | more 分页查询所有
rpm -q 软件名称
rpm -qi 软件名 查询软件信息
rpm -qi file
rpm -ql 软件名 查询软件安装位置
rpm -qf 目录 反向查询所在位置

#### 卸载rpm包

rpm -e 包名称
安装rpm包
rpm -ivh 软件包全路径名称
i = install 安装
v = verbose 提示
h = hash 进度条
强制性卸载指令 rpm -e -nodeps 软件名

### YUM包管理
> yum是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器
> 自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包
#### 查询yum服务器是否有需要安装的软件

yum list | grep application name

#### 安装指定yum包

yum install application name


## 15. 修仙之道 技术架构迭代 登峰造极之势
![Alt text](https://raw.githubusercontent.com/geekparkhub/geekparkhub.github.io/master/technical_guide/assets/media/main/technical_framework.jpg)


-----

## ?如何对该开源文档进行贡献?

1. Blog内容大多是手敲,所以难免会有笔误,你可以帮我找错别字。
2. 很多知识点我可能没有涉及到,所以你可以对其他知识点进行补充。
3. 现有的知识点难免存在不完善或者错误,所以你可以对已有知识点的修改/补充。
4. ?欢迎贡献`各领域开源野生Blog`&`笔记`&`文章`&`片段`&`分享`&`创想`&`OpenSource Project`&`Code`&`Code Review`
5. ??????????? issues: [geekparkhub.github.io/issues](https://github.com/geekparkhub/geekparkhub.github.io/issues) ???????????

### 希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷                          


-----


## ?感谢您的阅读 欢迎您的留言与建议?

- FaceBook:[JEEP SevenEleven](https://www.facebook.com/profile.php?id=100018099483403)
- Twitter:[@JEEP7ll](https://twitter.com/JEEP7ll)
- Sina Weibo: [@JEEP-711](https://weibo.com/JEEP511)
- GeekParkHub GithubHome:<https://github.com/geekparkhub>
- GeekParkHub GiteeHome:<https://gitee.com/geekparkhub>
- Blog GardenHome:<http://www.cnblogs.com/JEEP711/>
- W3C/BlogHome:<https://www.w3cschool.cn/jeep711blog/>
- 优快云/BlogHome:<http://blog.youkuaiyun.com/jeep911>
- 51CTO/BlogHome:<http://jeep711.blog.51cto.com/>
- Email:<jeep711.home.@gmail.com>—— <jeep-711@outlook.com> —— <geekparkhub@outlook.com>



### 捐助 项目的发展离不开你的支持,请开发者喝杯☕Coffee☕吧!
![enter image description here](https://www.geekparkhub.com/docs/images/pay.jpg)

#### `致谢`:
**捐助时请备注 UserName**
| ID| UserName | Donation | Money | Consume |
|:-| :-------- | --------:| :--: |:--: |
|1 | Object | WeChatPay |  5RMB | 一杯可乐 | 
|2| 泰迪熊看月亮  | AliPay |  20RMB  | 一杯咖啡 | 
|3| 修仙道长  | WeChatPay |  10RMB | 两杯可乐 | 


## License 开源协议
[Apache License Version 2.0](https://github.com/geekparkhub/geekparkhub.github.io/blob/master/LICENSE)

---------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值