This commit is contained in:
shiyanshi
2019-11-15 12:41:55 +08:00
parent 1534cb46c5
commit 4e13e47cbe
15 changed files with 1351 additions and 281 deletions

View File

@@ -1,37 +0,0 @@
# 概述
## 1 帮助命令
### 查看简要说明
查看简单讲解。
```
//简要说明命令的作用
whais command
```
### man
查看完整帮助手册。
* command
* -k 能够搜索不完整命令
### info
查看详细内容
* command
* -w name pattern contains shell style wildcard
### which
查看命令位置(一半为系统环境下命令的可执行文件的位置)
* command
### whereis keyword
查看所有搜索路径下关键词的位置。
* command

View File

@@ -0,0 +1,143 @@
# 系统概述
> whatis info man which whereis
## 1 目录结构
* /bin
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
* /boot
这里存放的是启动Linux时使用的一些核心文件包括一些连接文件以及镜像文件。
* /dev
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备在Linux中访问设备的方式和访问文件的方式是相同的。
* /etc
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
* /home
用户的主目录在Linux中每个用户都有一个自己的目录一般该目录名是以用户的账号命名的。
* /lib
这个目录里存放着系统最基本的动态连接共享库其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
* /lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
* /media
linux系统会自动识别一些设备例如U盘、光驱等等当识别后linux会把识别的设备挂载到这个目录下。
* /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
* /opt
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
* /proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件.
* /root
该目录为系统管理员,也称作超级权限者的用户主目录。
* /sbin
s就是Super User的意思这里存放的是系统管理员使用的系统管理程序。
* /srv
该目录存放一些服务启动之后需要提取的数据。
* /sys
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候对应的文件和目录也在内核对象子系统中被创建。
* /tmp
这个目录是用来存放一些临时文件的。
* /usr
这是一个非常重要的目录用户的很多应用程序和文件都放在这个目录下类似于windows下的program files目录。
* /usr/bin
系统用户使用的应用程序。
* /usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序。
* /usr/src
内核源代码默认的放置目录。
* /var
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
* /run
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
## 2 帮助命令
在linux终端面对命令不知道怎么用或不记得命令的拼写及参数时我们需要求助于系统的帮助文档 linux系统内置的帮助文档很详细通常能解决我们的问题我们需要掌握如何正确的去使用它们
在只记得部分命令关键字的场合我们可通过man -k来搜索
需要知道某个命令的简要说明可以使用whatis而更详细的介绍则可用info命令
查看命令在哪个位置我们需要使用which
而对于命令的具体参数及使用方法我们需要用到强大的man
下面介绍这些命令;
### whatis
查看命令的简要说明
```
$whatis command
```
正则匹配:
```
$whatis -w "loca*"
```
更加详细的说明文档:
```
$info command
```
### man
查询命令command的说明文档:
```
$man command
egman date
```
在man的帮助手册中将帮助文档分为了9个类别对于有的关键字可能存在多个类别中 我们就需要指定特定的类别来查看一般我们查询bash命令归类在1类中
man页面所属的分类标识(常用的是分类1和分类3)
1. 用户可以操作的命令或者是可执行文件
2. 系统核心可调用的函数与工具等
3. 一些常用的函数与数据库
4. 设备文件的说明
5. 设置文件或者某些文件的格式
6. 游戏
7. 惯例与协议等。例如Linux标准文件系统、网络协议、ASCⅡ码等说明内容
8. 系统管理员可用的管理条令
9. 与内核有关的文件
当whatis下的命令有多个分类时。使用数字表示某个分类下的帮助手册。
```
$man 3 printf
```
```
$man -k keyword
```
查询关键字 根据命令中部分关键字来查询命令,适用于只记住部分命令的场合;
查找GNOME的config配置工具命令对于某个单词搜索可直接使用/word来使用:
```
$man -k GNOME config| grep 1
```
### which & whereis
查看程序的binary文件所在路径:
```
$which command
```
查看程序的搜索路径:
```
$whereis command
```
当系统中安装了同一软件的多个版本时,不确定使用的是哪个版本时,这个命令就能派上用场;

View File

@@ -0,0 +1,49 @@
# 性能管理
> top / sar / free / watch
## 1 监控CPU
查看CPU使用率
```
$sar -u
```
查看CPU平均负载
```
$sar -q 1 2
```
sar指定-q后就能查看运行队列中的进程数、系统上的进程大小、平均负载等
## 2 查询内存
查看内存使用状况 sar指定-r之后可查看内存使用状况;
```
$sar -r 1 2
```
查看内存使用量
```
$free -m
```
## 3 查询页面交换
查看页面交换发生状况 页面发生交换时服务器的吞吐量会大幅下降服务器状况不良时如果怀疑因为内存不足而导致了页面交换的发生可以使用sar -W这个命令来确认是否发生了大量的交换
```
$sar -W 1 3
```
6.5. 综合应用
当系统中sar不可用时可以使用以下工具替代linux下有 vmstat、Unix系统有prstat
eg 查看cpu、内存、使用情况 vmstat n m n 为监控频率、m为监控次数
[/home/weber#]vmstat 1 3
使用watch 工具监控变化 当需要持续的监控应用的某个数据变化时watch工具能满足要求 执行watch命令后会进入到一个界面输出当前被监控的数据一旦数据变化便会高亮显示变化情况
eg操作redis时监控内存变化
```
$watch -d -n 1 './redis-cli info | grep memory'
```
以下为watch工具中的界面内容一旦内存变化即实时高亮显示变化

View File

@@ -1,256 +1,156 @@
# 文件管理
## 1 文件目录操作
# 文件及目录管理
### touch
创建文件
* filename
> * 文件管理,目录的创建、删除、查询、管理: mkdir rm mv
> * 文件的查询和检索: find locate
> * 查看文件内容cat vi tail more
> * 管道和重定向: ; | && >
> * 写出命令以及主要的参数说明,具体内容查看参考手册。
### mkdir
创建目录
* dirname
### mv
移动
* sourcefile destfile
* -r 递归
### cp
复制
* sourcefile destfile
* -r 递归
### rm
删除
* dirname/filename
* -r 递归删除
* -f 强制删除不弹出确认步骤
### cd
切换目录
* pathname
### pwd
显示当前绝对路径
### ls
查看目录
* [filename*] 能够使用通配符
* -a 所有文件,包括隐藏文件
* -l 长格式输出
### alias
别名
* newname=aimname
### wc
print newline, word, and byte counts for each file.输出文件内容的统计数。
* file or files name
* -c byte counts
* -m character counts
* -l newline counts
* -w word counts
## 2 查看文件内容
### cat
查看文件内容
* filename
* -n 显示行号
### more
查看文件内容
* filename
### head
查看文件前几行内容
* filename
* -10 显示前十行
### tail
查看文件后几行
* filename
* -10 显示文件后10行
## diff
对比两个文件之间的差别。
* file1 file2
## 3 查找文件名称
### find
搜索目录,查找文件名。
* dirname
* -name keyword 指定字符串查找文件名,支持通配符。
> 这个命令还有很多更高级的用法日后用到再说。直接man查看用法这是个程序或者说软件。
### locate
搜索包含字符串的目录。
* stringname
### 4 查找文件内容
### grep
查找文件内容,根据文件内容进行匹配。
Global search Regular Expression and Print the line.
* pattern filename
* -i 不区分大小写
* -n 显示行号
* --color 高亮显示
* -c 只统计目标行数
* -o 只显示目标行的命中关键词
* -B 显示目标行之前的行
* -A 显示目标航之后的行
* -w 硬匹配到目标单词。
* -e 能够添加多个匹配项
* -E 表示支持扩展正则表达式
> 同find也是一个复杂的程序软件日后用到查看说明文档。
## 1 创建、删除、移动、复制
```
grep -e "am" hello.txt
创建mkdir
删除rm
删除非空目录rm -rf file目录
删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
移动mv
复制cp (复制目录cp -r )
复制目录:$cp -r source_dir dest_dir
```
## 5 文件权限操作
### 查看文件属性
## 2 目录切换
```
ls-al
-rw-r--r-- l root root 42304 Sep 4 18:26 install.log
找到文件/目录位置cd
切换到上一个工作目录: cd -
切换到home目录 cd or cd ~
显示当前路径: pwd
更改当前工作路径为path: $cd path
```
* 文件类型 [-]普通文件[d]目录[l]连接文件[b]接口设备[c]串行端口设备
* 文件权限[rwx]分别代表拥有者、用户组、其他人的操作权限
* 表示多少文件名连接到这个节点
* 表示拥有者名字
* 表示用户组
* 文件容量
* 创建或者修改日期
* 文件名字
### chgrp
改变文件属性
## 3 列出目录项
```
chgrp [-R] groupname dirname/filename
chgrp users install.log
显示当前目录下的文件 ls
按时间排序,以列表的方式显示目录项 ls -lrt
给每项文件前面增加一个id编号(看上去更加整洁):>ls | cat -n
```
* -R 递归更改组
### chwon
## 4 查找目录及文件 find/locate
搜寻文件或目录:
```
chown [-R] ownername dirname/filename
chwon estom install.log
$find ./ -name "core*" | xargs file
```
* -R 递归更改拥有者
### chmod
查找目标文件夹中是否有obj文件:
```
chmod [-R] xyz dirname/filename
chmod 777 install.log
chmod u/g/o/a +/-/= r/w/x dirname/filename
$find ./ -name '*.o'
```
递归当前目录及子目录删除所有.o文件:
```
$find ./ -name "*.o" -exec rm {} \;
```
查看当前目录下文件个数:
```
$find ./ | wc -l
```
find是实时查找如果需要更快的查询可试试locatelocate会为文件系统建立索引数据库如果有文件更新需要定期执行更新命令来更新索引库:
```
$locate string
$updatedb
```
* -R 递归更改文件内容
* 1~7分别对应二进制文件权限
* ugoa 分别设置user,group,other,all的权限。
## 6 符号连接/硬连接
2.5. 查看文件内容
查看文件:
```
cat vi head tail more
```
显示时同时显示行号:
```
$cat -n
```
按页显示列表内容:
```
$ls -al | more
```
只看前10行:
```
$head - 10 **
```
显示文件第一行:
```
$head -1 filename
```
显示文件倒数第五行:
```
$tail -5 filename
```
查看两个文件间的差别:
```
$diff file1 file2
```
动态显示文本最新信息:
```
$tail -f crawler.log
```
### ln
创建一个指向目标的连接。
* filename destname
* -s 符号连接
2.6. 查找文件内容
使用egrep查询文件内容:
```
egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012
egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2
```
## 7 文件与目录权限修改
```
改变文件的拥有者 chown
改变文件读、写、执行等属性 chmod
递归子目录修改: chown -R tuxapp source/
增加脚本可执行权限: chmod a+x myscript
```
## 8 快捷方式
创建符号链接/硬链接:
```
ln cc ccAgain :硬连接;删除一个,将仍能找到;
ln -s cc ccTo :符号链接(软链接)删除源另一个无法使用后面一个ccTo 为新建的文件)
```
## 7 目录配置说明
### 目录配置标准FHS
* /:根目录,与开机、还原、系统修复有关
* /bin单用户维护模式下还能被操作的命令。
* /sbinsystem系统用来开机修复还原系统所需要的命令
* /boot开机会使用到的文件
* /dev任何设备与接口设备都是以文件的形势存在于这个目录当中。
* /etc系统主要配置文件目录。
* /home用户文件夹
* /lib放置系统运行过程中用到的函数库。
* /media用于挂在可删除的设备DVD光盘等。
* /mnt暂时挂在额外的设备
* /opt第三方软件安装的目录。第三方软件习惯上放到/usr/local/目录下。
* /root系统管理员的主文件夹
* /srvservice网络服务启动后用来存取数据的目录
* /tmp一般用户或正在执行的程序暂时防止文件的地方任何人都能访问可以情理。
* /proc虚拟文件系统是内存的虚拟文件对应能够查看内存装填包括系统内核、进程、外部设备的状态以及网络状态。其对应内存空间本身不占用任何硬盘空间。
* /sys虚拟的文件系统记录与内核相关的信息。包括目前已经加载到内核的模块与内核检测到的硬件设备信息。
### 特殊的目录配置
* /usr可分享的不可变动的数据。UNIX Software Resource的缩写。所有的软件存在在这个目录下。
* /usr/bin绝大部分用户可以直接使用的命令
* /usr/includeC/C++等程序语言的头文件与包含文件
* /usr/lib包含软件的函数库、目标文件以及一般用户惯用的执行文件和脚本
## 8 管道和重定向
* 批处理命令连接执行,使用 |
* 串联: 使用分号 ;
* 前面成功,则执行后面一条,否则,不执行:&&
* 前面失败,则后一条执行: ||
## 9 管道和重定向
```
批处理命令连接执行,使用 |
串联: 使用分号 ;
前面成功,则执行后面一条,否则,不执行:&&
前面失败,则后一条执行: ||
ls /proc && echo suss! || echo failed.
能够提示命名是否执行成功or失败
```
与上述相同效果的是:
```
ls /proc && echo suss! || echo failed
if ls /proc; then echo suss; else echo fail; fi
```
### 管道 |
表示第一个命令的输出可以作为第二个命令的输入。可以利用管道对前一个命令的输出进行处理、过滤、统计等。
重定向:
```
find ./ | wc -l
```
wc 会把前一个命令的输出看做一个文件,然后输出这个文件的行数。所以能够显示./文件下的目录个数。
```
ls | cat -n
```
cat也会把前一个命令的输出看做一个文件然后对文件进行操作。
### 重定向> >>
将标准输出和标准错误重定向到一个文件当中。
```
> 覆盖文件内容
>> 添加新内容到结尾
ls proc/*.c > list 2> &l 将标准输出和标准错误重定向到同一文件;
```
## 9 设置环境变量
1. 在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量该变量将会对Linux下所有用户有效并且是“永久的”。
例如:编辑/etc/profile文件添加CLASSPATH变量
等价的是:
```
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
ls proc/*.c &> list
```
清空文件:
```
:> a.txt
```
重定向到文件的末尾
```
echo aa >> a.txt
```
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
2. 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量改变量仅会对当前用户有效并且是“永久的”。
## 10 Bash快捷输入或删除
快捷键:
```
Ctl-U 删除光标到行首的所有字符,在某些设置下,删除全行
Ctl-W 删除当前光标到前边的最近一个空格之间的字符
Ctl-H backspace,删除光标前边的字符
Ctl-R 匹配最相近的一个文件,然后输出
```
2.12. 综合应用
查找record.log中包含AAA但不包含BBB的记录的总数:
例如编辑guok用户目录(/home/guok)下的.bash_profile
vi/home/guok/.bash.profile添加如下内容exportCLASSPATH=./JAVAHOME/lib;JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。
3. 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,
shell关闭了变量也就失效了再打开新shell时就没有这个变量需要使用的话还需要重新定义。
cat -v record.log | grep AAA | grep -v BBB | wc -l

View File

@@ -1,26 +1,146 @@
# 文件与目录管理
# 用户管理
## 目录与路径
## 文件与目录管理
## 文件内容查阅
## 文件与目录的默认权限与隐藏权限
## 命令与文件查询
## 权限与命令的关系
> useradd passwd userdel usermod chmod chown .bashrc .bash_profile
## 1 添加删除
添加用户,为用户创建相应的帐号和用户目录/home/username
```
$useradd -m username
```
用户添加之后,设置密码,密码以交互方式创建:
```
$passwd username
```
删除用户
```
$userdel -r username
```
不带选项使用 userdel只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息使用-r选项
帐号切换 登录帐号为userA用户状态下切换到userB用户帐号工作:
```
$su userB
```
进入交互模型,输入密码授权进入;
## 1 用户与用户
### 用户
* owner
* 可以属于多个不同group
### 用户组
* 包含一组用户
* 一组用户拥有相同的权限。
## 2 用户
将用户加入到组
默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:
```
$groups
```
一个用户可以属于多个组,将用户加入到组:
```
$usermod -G groupNmame username
```
变更用户所属的根组(将用户加入到新的组,并从原有的组中除去):
```
$usermod -g groupName username
```
查看系统所有组,系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读。查看所有用户及权限:
```
$more /etc/passwd
```
查看所有的用户组及权限:
```
$more /etc/group
```
### others
* 其他人,不属于用户组。
## 3 用户权限
使用ls -l可查看文件的属性字段文件属性字段总共有10个字母组成第一个字母表示文件类型如果这个字母是一个减号”-”,则说明该文件是一个普通文件。字母”d”表示该文件是一个目录字母”d”,是dirtectory(目录)的缩写。 后面的9个字母为该文件的权限标识3个为一组分别表示文件所属用户、用户所在组、其它用户的读写和执行权限 例如:
```
[/home/weber#]ls -l /etc/group
-rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
```
表示这个文件对文件拥有者colin这个用户可读写、可执行对colin所在的组king可读可写对其它用户只可读
### 记录位置
* 用户内容-/etc/passwd
* 密码内容-/etc/shadow
* 组内容-/etc/group
更改读写权限
使用chmod命令更改文件的读写权限更改读写权限有两种方法一种是字母方式一种是数字方式
字母方式:
```
$chmod userMark(+|-)PermissionsMark
```
userMark取值
```
u用户
g
o其它用户
a所有用户
```
PermissionsMark取值
```
r:读
w
x执行
```
例如:
```
$chmod a+x main 对所有用户给文件main增加可执行权限
$chmod g+w blogs 对组用户给文件blogs增加可写权限
```
数字方式:
数字方式直接设置所有权限,相比字母方式,更加简洁方便;
使用三位八进制数字的形式来表示权限第一位指定属主的权限第二位指定组权限第三位指定其他用户的权限每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权7(4+2+1)有读、写和执行的权限。
例如:
```
$chmod 740 main 将main的用户权限设置为rwxr-----
```
更改文件或目录的拥有者
```
$chown username dirOrFile
```
使用-R选项递归更改该目下所有文件的拥有者:
```
$chown -R weber server/
```
# 4 环境变量
### bashrc & profile
bashrc与profile都用于保存用户的环境信息bashrc用于交互式non-loginshell而profile用于交互式login shell。
```
/etc/profile/etc/bashrc 是系统全局环境变量设定
~/.profile~/.bashrc用户目录下的私有环境变量设定
```
### login过程
当登入系统获得一个shell进程时其读取环境设置脚本分为三步:
* 首先读入的是全局环境变量设置文件/etc/profile然后根据其内容读取额外的文档如/etc/profile.d和/etc/inputrc
* 读取当前登录用户Home目录下的文件~/.bash_profile其次读取~/.bash_login最后读取~/.profile这三个文档设定基本上是一样的读取有优先关系
* 读取~/.bashrc。
### ~/.profile与~/.bashrc的区别
这两者都具有个性化定制功能
* ~/.profile可以设定本用户专有的路径环境变量它只能登入的时候执行一次
* ~/.bashrc也是某用户专有设定文档可以设定路径命令别名每次shell script的执行都会使用它一次
例如,我们可以在这些环境变量中设置自己经常进入的文件路径,以及命令的快捷方式:
```
.bashrc
alias m='more'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l'
alias lsl='ls -lrt'
alias lm='ls -al|more'
log=/opt/applog/common_dir
unit=/opt/app/unittest/common
.bash_profile
. /opt/app/tuxapp/openav/config/setenv.prod.sh.linux
export PS1='$PWD#'
```
通过上述设置我们进入log目录就只需要输入cd $log即可

View File

@@ -0,0 +1,91 @@
# 磁盘管理
> * 查看磁盘空间 df -h
> * 查看目录大小 du -sh
> * 打包 tar -cvf
> * 解包 tar -xvf
> * 压缩 gzip bzip
> * 解亚索 gunzip,bunzip,unzip
解压缩 gunzip bzip
## 1 查看磁盘空间
查看磁盘空间利用大小:
```
df -h
```
-h: human缩写以易读的方式显示结果
查看当前目录所占空间大小:
```
du -sh
-h 人性化显示
-s 递归整个目录的大小
$du -sh
653M
```
查看当前目录下所有子文件夹排序后的大小:
```
for i in `ls`; do du -sh $i; done | sort
或者:
du -sh `ls` | sort
```
4.2. 打包/ 压缩
在linux中打包和压缩和分两步来实现的
* 打包是将多个文件归并到一个文件:
```
tar -cvf etc.tar /etc <==仅打包,不压缩!
-c :打包选项
-v :显示打包进度
-f :使用档案文件
注:有的系统中指定参数时不需要在前面加上-直接使用tar xvf
```
用tar实现文件夹同步排除部分文件不同步:
```
tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -)
```
* 压缩,生成 demo.txt.gz
```
$gzip demo.txt
```
## 3 解包/解压缩
解包
```
tar -xvf demo.tar
-x 解包选项
```
解压后缀为 .tar.gz的文件
1. 解压缩
```
$gunzip demo.tar.gz
```
2. 解包:
```
$tar -xvf demo.tar
```
bz2解压解包:
```
tar jxvf demo.tar.bz2
```
如果tar 不支持j则同样需要分两步来解包解压缩使用bzip2来解压再使用tar解包:
```
bzip2 -d demo.tar.bz2
tar -xvf demo.tar
-d decompose,解压缩
```
tar解压参数说明
```
-z 解压gz文件
-j 解压bz2文件
-J 解压xz文件
```

View File

@@ -0,0 +1,97 @@
# 进程管理
> ps top lsof kill pmap
## 1 查询进程
查询正在运行的进程信息
```
$ps -ef
```
eg:查询归属于用户colin115的进程
```
$ps -ef | grep colin115
$ps -lu colin115
```
查询进程ID适合只记得部分进程字段
```
$pgrep 查找进程
```
eg:查询进程名中含有re的进程
```
[/home/weber#]pgrep -l re
```
以完整的格式显示所有的进程
```
$ps -ajx
```
显示进程信息,并实时更新
```
$top
```
查看端口占用的进程状态:
```
lsof -i:3306
```
查看用户username的进程所打开的文件
```
$lsof -u username
```
查询init进程当前打开的文件
```
$lsof -c init
```
查询指定的进程ID(23295)打开的文件:
```
$lsof -p 23295
``
查询指定目录下被进程开启的文件(使用+D 递归目录):
```
$lsof +d mydir1/
```
## 2 终止进程
杀死指定PID的进程 (PID为Process ID)
```
$kill PID
```
杀死相关进程
```
kill -9 3434
```
杀死job工作 (job为job number)
```
$kill %job
```
## 3 进程监控
查看系统中使用CPU、使用内存最多的进程
```
$top
(->)P
```
输入top命令后进入到交互界面接着输入字符命令后显示相应的进程状态
对于进程平时我们最常想知道的就是哪些进程占用CPU最多占用内存最多。以下两个命令就可以满足要求:
```
P根据CPU使用百分比大小进行排序。
M根据驻留内存大小进行排序。
i使top不显示任何闲置或者僵死进程。
```
这里介绍最使用的几个选项,对于更详细的使用,详见 top linux下的任务管理器 ;
## 4 分析线程栈
使用命令pmap来输出进程内存的状况可以用来分析线程堆栈
```
$pmap PID
```
5.5. 综合运用
将用户colin115下的所有进程名以av_开头的进程终止:
```
ps -u colin115 | awk '/av_/ {print "kill -9 " $1}' | sh
```
将用户colin115下所有进程名中包含HOST的进程终止:
```
ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9;
```

View File

@@ -0,0 +1,111 @@
# 网络管理
> netstat lsof route ping host wget sftp scp
## 1 查询网络服务和端口
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics)masquerade 连接,多播成员 (Multicast Memberships) 等等。
列出所有端口 (包括监听和未监听的):
```
netstat -a
```
列出所有 tcp 端口:
```
netstat -at
```
列出所有有监听的服务状态:
```
netstat -l
```
使用netstat工具查询端口:
```
$netstat -antp | grep 6379
```
查询7902端口现在运行什么程序:
1. 查询使用该端口的进程的PID
```
$lsof -i:7902
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
WSL 30294 tuapp 4u IPv4 447684086 TCP 10.6.50.37:tnos-dp (LISTEN)
```
2. 查到30294使用ps工具查询进程详情
```
$ps -fe | grep 30294
tdev5 30294 26160 0 Sep10 ? 01:10:50 tdesl -k 43476
root 22781 22698 0 00:54 pts/20 00:00:00 grep 11554
```
## 2 网络路由
查看路由状态:
```
$route -n
```
发送ping包到地址IP:
```
$ping IP
```
探测前往地址IP的路由路径:
```
$traceroute IP
```
DNS查询寻找域名domain对应的IP:
```
$host domain
```
反向DNS查询:
```
$host IP
```
## 3 镜像下载
直接下载文件或者网页:
```
wget url
```
常用选项:
```
limit-rate :下载限速
-o指定日志文件输出都写入日志
-c断点续传
```
axel工具真好用
## 4 ftp sftp lftp ssh
SSH登陆:
```
$ssh ID@host
```
ssh登陆远程服务器hostID为用户名。
ftp/sftp文件传输:
```
$sftp ID@host
```
登陆服务器hostID为用户名。sftp登陆后可以使用下面的命令进一步操作
```
get filename # 下载文件
put filename # 上传文件
ls # 列出host上当前路径的所有文件
cd # 在host上更改当前路径
lls # 列出本地主机上当前路径的所有文件
lcd # 在本地主机更改当前路径
```
lftp同步文件夹(类似rsync工具):
```
lftp -u user:pass host
lftp user@host:~> mirror -n
```
## 5 网络复制
将本地localpath指向的文件上传到远程主机的path路径:
```
$scp localpath ID@host:path
```
以ssh协议遍历下载path路径下的整个文件系统到本地的localpath:
```
$scp -r ID@site:path localpath
```

View File

@@ -0,0 +1,215 @@
## 变量
### 变量操作
* 定义变量
country="china"
number = 10
* 使用变量
$country
${country}
echo "i love you ${country}abcd"
* 重新定义变量
country="hello"
* 只读变量
readonly country = "china"
* 删除变量
unset variable_name
### 变量类型
* 局部变量:在脚本中定义在当前shell中有效
* 环境变量:所有程序有效
* shell变量shell设置的特殊变量有一部分是环境变量
### 特殊变量
```
$0 当前脚本文件名
$n 传递参数第n个参数
$# 传递参数:参数个数
$* 传递参数:所有参数
$@ 传递参数:所有参数
$? 上个命令的返回至
$$ 当前shell的进程ID
```
### 转义字符
\\
\a
\b
\f
\n
\r
\t
\v
### 命令替换
把一个命令的输出赋值给另一个变量
directory = `pwd`
### 变量替换
... ...
## Shell 运算符
### 算术运算
不支持数学运算但可以通过shell命令awk expr进行数学运算。
+ - * / % = == =
### 关系运算
-eq
-ne
-gt
-lt
-ge
-le
### 布尔运算
!
-o
-a
### 字符串运算
= 检测两个字符串是否相等
!= 字符串不相等
-z 长度是否为零
-n 是否不为零
str 是否为空
## shell字符串
### 单引号限制
单引号内的任何字符原样输出,变量无效,转义字符无效
单引号不允许嵌套
### 双引号
内部可以有变量和转义字符
允许嵌套
### 字符串拼接
"hello $country"
### 字符串长度
${#string}
### 字符串切片
${string:1:4}
### 字符串查找
## shell 数组
### 定义数组
array_name[value0 value1 value2]
array_name[0]=value0
### 使用数组
${array_name[index]}
${array_name[@]}
### 获取数组信息
length = ${#array_name[@]}
## printf 格式化输出函数
$ printf "%d %s\n" 1 "abc"
## 条件语句
### if
if
then
else
fi
### case
case a in
;;
;;
esac
### for
for a in list
do
done
### while
whle [$a -lt 5]
do
done
### until
util command
do
done
## 函数
function_name(){
list of commands
return value
}
## 文件包含
. filename
source filename

View File

@@ -0,0 +1,156 @@
# vim编辑器
![](image/vi-vim-cheat-sheet-sch.gif)
## 1 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键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
![](image/vim-vi-workmodel.png)
## 2 命令模式
一般模式可用的光标移动、复制粘贴、搜索替换等
### 移动光标
|操作|效果|
|-|-|
|h 或 向左箭头键(←) |光标向左移动一个字符|
|j 或 向下箭头键(↓) |光标向下移动一个字符|
|k 或 向上箭头键(↑) |光标向上移动一个字符|
|l 或 向右箭头键(→) |光标向右移动一个字符|
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
|操作|效果|
|-|-|
|[Ctrl] + [f]| 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)|
|[Ctrl] + [b]| 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)|
|[Ctrl] + [d]| 屏幕『向下』移动半页|
|[Ctrl] + [u]| 屏幕『向上』移动半页|
|+ |光标移动到非空格符的下一行|
|- |光标移动到非空格符的上一行|
|n<space> |那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。|
0 或功能键[Home] |这是数字『 0 』:移动到这一行的最前面字符处 (常用)|
$ 或功能键[End] |移动到这一行的最后面字符处(常用)|
|H |光标移动到这个屏幕的最上方那一行的第一个字符|
|M |光标移动到这个屏幕的中央那一行的第一个字符|
|L |光标移动到这个屏幕的最下方那一行的第一个字符|
|G |移动到这个档案的最后一行(常用)|
nG |n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)|
|gg |移动到这个档案的第一行,相当于 1G 啊! (常用)|
|n<Enter> |n 为数字。光标向下移动 n 行(常用)|
### 搜索替换
|操作|效果|
|-|-|
|/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
|?word 向光标之上寻找一个字符串名称为 word 的字符串。
|n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
|N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
|使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
|:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 (常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
删除、复制与贴上
x, X 在一行字当中x 为向后删除一个字符 (相当于 [del] 按键) X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
## 编辑模式
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式
i, I 进入输入模式(Insert mode)
i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode)
a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode)
这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R 进入取代模式(Replace mode)
r 只会取代光标所在的那一个字符一次R会一直取代光标所在的文字直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!
[Esc] 退出编辑模式,回到一般模式中(常用)
## 底线模式
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如
『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢那就是『20j』或者是『20↓』即可。

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1,47 @@
# swap缓存配置
> swapon、swapoff
## 配置过程
1.首先用命令free查看系统内 Swap 分区大小
```
  free -m
  total used free shared buffers cached
  Mem: 2012 1960 51 0 748 950
  -/+ buffers/cache: 260 1751
  Swap: 255 0 255
  可以看到 Swap 只有255M下面我们来扩大到2G。
```
2.创建一个 Swap 文件
```
  找一个空间足够的目录用来存放swap文件
  mkdir /swap
  cd /swap
  sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000
  出现下列提示,上面命令中的 count 即代表swap文件大小。
  记录了2000000+0 的读入
  记录了2000000+0 的写出
  2048000000字节(2.0 GB)已复制63.3147 秒32.3 MB/秒
  把生成的文件转换成 Swap 文件
  sudo mkswap -f swapfile
  Setting up swapspace version 1, size = 1999996 KiB
  no label, UUID=fee9ab21-9efb-47c9-80f4-57e48142dd69
```
3.激活 Swap 文件
```
  sudo swapon swapfile
  再次查看 free -m 的结果。
  total used free shared buffers cached
  Mem: 2012 1971 41 0 572 1156
  -/+ buffers/cache: 241 1770
  Swap: 2209 0 2209
  添加成功。
```
4.扩展:
```
  如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
  sudo swapoff swapfile
  如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。
  /swap/swapfile /swap swap defaults 0 0
```

View File

@@ -0,0 +1,82 @@
# linux下gcc默认搜索头文件及库文件的路径
## 1 头文件
gcc 在编译时如何去寻找所需要的头文件:
1. 所有header file的搜寻会从-l开始
2. 然后找gcc的环境变量
C_INCLUDE_PATHCPLUS_INCLUDE_PATHOBJC_INCLUDE_PATH
3. 再找内定目录
```
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/……/……/……/……/include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/……/……/……/……/i386-linux/include
# 库文件但是如果装gcc的时候是有给定的prefix的话那么就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
```
## 2 库文件
> cos等函式库的选项要多加 -lm
编译的时候:
1. gcc会去找-L
2. 再找gcc的环境变量LIBRARY_PATH
3. 再找内定目录 /lib /usr/lib /usr/local/lib这是当初compile gcc时写在程序内的
## 3 动态库的搜索路径
1. 在配置文件/etc/ld.so.conf中指定动态库搜索路径
2. 通过环境变量LD_LIBRARY_PATH指定动态库搜索路径当通过该环境变量指定多个动态库搜索路径时路径之间用冒号""分隔)
3. 在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
这是通过gcc 的参数"-Wl-rpath"指定如例3所示。当指定多个动态库搜索路径时路径之间用冒号""分隔)
4. 默认的动态库搜索路径/lib
5. 默认的动态库搜索路径/usr/lib
可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库从而获得第1个动态库搜索顺序然后删除该动态库再执行程序pos获得第2个动态库搜索路径再删除第2个被搜索到的动态库如此往复将可得到Linux搜索动态库的先后顺序。
程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
程序pos输出结果使用的动态库对应的动态库搜索路径指定方式
```
./ ./libpos.so 编译目标代码时指定的动态库搜索路径
/root/test/env/lib /root/test/env/lib/libpos.so环境变量LD_LIBRARY_PATH指定的动态库搜索路径
/root/test/conf/lib /root/test/conf/lib/libpos.so配置文件/etc/ld.so.conf中指定的动态库搜索路径
/lib /lib/libpos.so 默认的动态库搜索路径/lib
/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
```
综合以上结果可知,动态库的搜索路径搜索的先后顺序是:
1. 编译目标代码时指定的动态库搜索路径;
2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
4. 默认的动态库搜索路径/lib
5. 默认的动态库搜索路径/usr/lib.
g++ -std=c++11 con_var.cpp -lpthread
## 链接过程
https://www.jianshu.com/p/4510b47ecd8a
https://blog.csdn.net/caikunbob/article/details/85550000
明白一件事。
C/C++ 经过编译汇编,生成二进制文件,只需要搜索头文件,找到函数的相关声明,即可正常编译。
C/C++ 经过链接,需要搜索头文件中指定的库文件,编译相关的函数,生成二进制文件,然后进行链接,生成目标文件。

View File

@@ -0,0 +1,96 @@
# Apache详解
## Apache目录结构说明
* /etc/httpd/conf/httpd.conf:最主要的配置文件不过很多其他的distribution都将这个文件拆成数个小文件分别管理不同的参数。但是最主要配置文件还是以这个文件名为主。
* /etc/httpd/conf.d/*.conf:这个事CentOS的特色之一如果你不想修改原始配置文件httpd.conf的话那么可以将你自己的额外参数独立出来而启动apache时这个文件就会被读入到主要配置文件。
* /var/www/html:这里是CentOS默认的“首页”所在目录。
* /var/www/error:如果因为主机设置错误,或者是浏览器端要求的数据错误,在浏览器上出现的错误信息就已这个目录的默认信息为主。
* /var/www/icons:提供apache的一些小图标
* /var/www/cgi-bin :默认给一些可执行的CGI程序放置的目录
* /var/log/httpd:默认apache的日志文件都放在这里对于流量大的网站来说这个目录要很小心因为这个文件很容易变的很大您需要足够的空间哦
* /usr/lib/httpd/modules:apache支持很多的模块所以您想要使用的模块默认都放置在此目录
* /usr/sbin/apachectl:这是Apache的主要执行文件这个执行文件其实是shell script,它可以主动检测系统上的一些设置值好让您启动Apache时更简单
* /usr/sbin/httpd:这是主要的apache的二进制文件
* /usr/bin/htpasswd:当您想登陆某些网页时需要输入账号与密码。那么Apache本身就提供一个最基本的密码保护方式。该密码的产生就是通过这个命令实现的
## MySQL目录与文件说明
* /etc/my.cnf:这是Mysql的配置文件包括您想要进行mysql数据库的最佳化或者是正对mysql进行一些额外的参数指定都可以在这个文件里实现
* /usr/lib/mysql:这个目录是MySQL数据库放置的位置当启动任何MySQL的服务器时请务必记得在备份时将此目录完整的备份下来。
## PHP文件说明
* /usr/lib/httpd/modules/libphp4.so:PHP提供给apache使用的模块这个关系我们能否在apache网页上面设计php程序语言的最重要文件
* /etc/httpd/conf.d/php.conf:你要不要手动将该模块写入Httpd.conf中呢不需要因为系统已经主动将php设置参数写入到这个文件中了而这个文件会在apache重新启动时被读入。
* /etc/php.ini:这是PHP的主要配置文件包括PHP能不能允许用户上传文件能不能允许某些低安全性的标志等都在这个配置文件中设置。
* /etc/php.d/mysql.ini /usr/lib/php4/mysql.so:PHP能否可以支持MySQL接口就看这两个文件了。这两个文件是由php-mysql软件提供的
* /usr/bin/phpize /usr/include/php:如果您以后想要安装类似PHP加速器可以让浏览速度加快的话那么这个文件与目录就需要存在否则加速器软件没法用。
## Apache的配置说明
* httpd.conf的基本设置是这样的:
```
<设置项目>
次设置项目内的相关参数
。。。。
</设置项目>
```
* ServerTokens OS
这个项目在告诉客户端WWW服务器的版本和操作系统不需要改编它
如果你不想告诉太多的主机信息将这个项目的OS改成Minor
* ServerRoot "/etc/httpd"
这个是设置文件的最顶层目录,通常使用绝对路径,下面某些数据设置使用相对路径时.
就是与这个目录设置值有关的下层目录,不需要更改它
* TimeOut
设定 服务器接收至完成的最长等待时间
* KeepAlive
设定服务器是否开启连续请求功能,真实服务器一般都要开启
* Port
设定http服务的默认端口。
* User/Group
设定 服务器程序的执行者与属组,这个一般是Apache
* Listen 80
端口Listen 12.34.56.78:80
* DocumentRoot "/var/www/html"
文档目录
* 对 /var/www目录访问限制
```
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
对/var/www/html目录访问限制
<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory>
```
* 默认编码
```
AddDefaultCharset UTF-8
EnableMMAP off
EnableSendfile on
include进来其它配置文件
IncludeOptional conf.d/*.conf
```
## Mysql服务安装
安装成功,傻瓜安装,一键配置。
## FTP服务的安装
## 工程项目的导入和配置