www.netcraft.com 能够查询所访问的网站的服务器类型和操作系统 --- 当防火墙不允许访问时就查不出
https://www.kernel.org/ linux内核版本号下载
50个最常用的Linux命令 https://gywbd.github.io/posts/2014/8/50-linux-commands.html
www.top500.org 记录运算速度排行前500的服务器
Linux在嵌入式发展很好 如手机和平板电脑 android、IOS底层操作系统是Linux
虚拟机安装过程要打开cpu的虚拟机功能
安装Ubuntu系统后继续安装VMware tools 实现本地电脑与虚拟机之间的文件拷贝
vmware tools安装方法:https://blog.csdn.net/colin_lisicong/article/details/70193552
共享文件夹打开命令: cd /mnt/hgfs/UbuntuShareFolder/
创建root用户
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
一、Linux系统分区
1、硬盘分区:
主分区 最多4个 可以为普通分区分区和扩展分区
扩展分区 最多只能有一个 可以分作逻辑分区
2、格式化
格式化是将硬盘隔断作等大小的数据块(block),参照衣柜
是为了将数据方便的写入硬盘,将每个数据块进行编号,方便查找和使用
3、每个硬件都要设备文件名,即Windows中的分配盘符,用于对磁盘储存设备的标识符
Linux中所有数据以文件保存和操作
Windows 分区-格式化-分配盘符即可使用 Linux在分配盘符之间需要将硬件和设备进行命名并以文件保存
如 IDE硬盘的设备文件名 /dev/hd[a-d] 表示硬盘a-d h表示hard d表示硬盘
--------------
分区设备文件名 在硬件标注文件名后也需要将分区文件进行命名
如 /dev/hda1 表示第一个硬盘的第一个分区
4、挂载
挂载是一个过程 在Windows中称为分配盘符 被分配的盘符称作挂载点
------
必须分区的有:
/ 根分区 如果根不分区,很多数据没有地方可写,根分区写满了系统不能正常运行
swap分区 虚拟内存、交换分区 当内存不够用时,把它当作内存来用 大小为内存的2倍 不超过2G
推荐分区
/boot 共同空间、启动分区 只写入启动时数据不可它用 大小为200M
-----
Linux的所有储存设备在挂载后才能使用
Windows将CDEF字母作为盘符 而Linux将空的目录文件作为盘符
Windows中 CDE盘并列 每个分区下只能储存当前分区下的文件 磁盘按照树状结构进行分配
在Linux中
/ ls ---假设根目录下的分区有下列三个子文件
/ boot /etc /home
根分区 / 和二级目录 /boot /etc /home 可能是在磁盘上连续的分割
(为什么是这样???)
虚拟机网络配置
如果是网线直连,选择桥接/如果是WiFi选择 选择NET
只要虚拟机和主机能相互ping通,则能建立远程连接 可以用虚拟机打开浏览器,如果浏览器能够运行,那么侧面反映可以ping通
---------
Linux与Windows有很多的不同
Linux系统中命令和文件全都是小写,如果是大写会报错
Windows的dos不区分大小写
Linux中所有内容都是文件 对文件的更改必须写到文件里面,命令行的更改都是临时的
Linux中的文件没有扩展名依靠权限区分文件类型 而Windows中绝大多数文件都有文件名
但是Linux中也有些帮助管理员理解和管理文件的后缀名,它是为管理员设计的,不写后缀名操作系统也能识别
压缩包:.gz .bz2 tar.bz2 .tgz
二进制软件包: .rpm
网页文件: .html .php
脚本文件: .sh
配置文件: .conf
-------
Windows中的文件(除文本文件)传入Linux,基本不会被识别,所以就避免了病毒的传染,但是就需要为Linux单独开发维护
Windows中的程序也不能之间在Linux中安装和运行
------------
cd /bin/ cd /sbin/ cd /usr/bin/ cd /usr/sbin
usr代表单用户模式 作系统修复用 bin是所有用户都能执行的 sbin只有root能执行
cd /boot/ 系统启动目录 不要在里面添加数据
cd /dev/ 设备文件 需要备份
cd /etc/ 配置文件保存的目录 需要备份
/home/ 用户目录
/lib/ 函数库
/lost+found/ fsck文件检测修复 平时打开什么都没有,当断电或其他造成文件丢失时执行命令时使用
挂载目录 相当于Windows系统中的CDE盘 空目录
/media/ 多媒体设备
/mnt/ U盘
/misc/ NFS设备
----
/usr/local/ 保存外来软件的目录
虚拟文件目录,存在于内存中,断电后消失,所有不要将数据保存在此俩目录中
/proc/ /sys/ 保存在当前系统内存,保存进程的数据以及cpu的信息等
/root/ root的home目录
/tmp/ 临时文件目录
/usr/ 软件资源目录 Unix software resource 不存放用户数据,用来存放系统软件资源
/var/ 动态数据保存位置,即存放日志邮件草稿等的目录
远程服务器不允许关机,只能重启 重启时应该关闭服务
在服务器访问高峰(数据量较大的)不要与运行高负载命令
防火墙是 IP地址加端口,远程配置时不要操作错误把自己放在防火墙之外
给用户分配的权限越小越好 因为做得事情越多,犯错误的可能性越大。
所以,学习的时候,不能同时做几件事情
将自己的数据定期备份
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
二、Linux常用命令处理
1、文件处理命令
命令格式与目录处理命令
ls
格式 命令 [-选项] [参数] ls -la /etc
ls -l /ls -h 查看文件详情 有所有者/所有组/其他人/文件大小/时间/文件名等
权限包括 r/w/x 读/写/执行
所有者/所有组/ 数据库权限管理、会计等都使用到
-all 列出目录下所有文件 包括以 . 开头的隐藏文件
-l 查看文件详情
-d 将目录像文件一样显示,而不说显示其下的文件
-h 文件详情人性化,给人看的文件详情
-i 查看文件编号
mkdir
创建一个目录 make directions
madir tmp/firstfile
使用-p递归创建目录
madir -p/tmp/firstfile/secondflie/thirdfile
cd / pwd / . /.. 分别表示 切换目录/显示当前目录绝对路径/点表示上级目录/点点表示上上级目录
rmdir
删除目录,需要把目录下的文件清空才能删除这个目录
cp
复制 copy
cp /[源文件]/[目标文件路径下]
cp -r (复制文件) /[源文件] /[目标路径] 此方法的文件创建时间会发生变化 可以在目标路径下直接修改文件名
cp -r /tmp/sichuan/chengdu/sicnu/shishan /root/chenglong
cp -p 保留原文件属性,完全拷贝
mv
剪贴、改名 move
mv /tmp/sichuan/chengdu/sicnu/shishan /root/chenglong
mv shishan chenglong
rm
删除 remove
删除文件 rm 文件 删除目录 rm -r 不询问rm -rf
ctrl+l 清屏 ctrl+C 终止操作
touch
创建文件 如果没有指明绝对路径则是在当前目录下创建文件
touch program file 不是创建了program file 而是创建了 program和file 两个文件
touch “program file”创建带空格的的文件
cat 直接查看文件
cat -n 查看文件行数
cat只显示长内容的最后一行命令
tac 可以反向显示
more 查看多行文件 空格或f翻页 回车换行 q退出
但是不能page up
less 命令不仅可以page up 还可以进行搜索 /搜索关键词 n/next显示所有匹配内容
head -n 7/文件名 显示文件前7行 默认显示前10行
tail -n -f 显示文件末尾的内
链接命令
ln -s 原文件 目标文件
ln -s /etc/issue /tmp/issue.soft
ln -s /etc/issue /tmp/issue.hard
软链接和硬链接文件
软链接很像是Windows中的快捷方式
软连接文件有三个rwx权限 但是源文件的权限与其无关
硬链接 除了文件位置不同,其他的都相同 当源文件修改后,硬链接同步更新,因为i节点相同,内核是对相同的i节点进行操作
touch
创建文件 如果没有指明绝对路径则是在当前目录下创建文件
touch program file 不是创建了program file 而是创建了 program和file 两个文件
touch “program file”创建带空格的的文件
cat 直接查看文件
cat -n 查看文件行数
cat只显示长内容的最后一行命令
tac 可以反向显示
more 查看多行文件 空格或f翻页 回车换行 q退出
但是不能page up
less 命令不仅可以page up 还可以进行搜索 /搜索关键词 n/next显示所有匹配内容
head -n 7/文件名 显示文件前7行 默认显示前10行
tail -n -f 显示文件末尾的内容
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
三、Linux权限管理命令
所有者--谁创建这个文件
所有组-拥有文件管理权限
其他人
u-g-o
rwx
更改文件的权限:root 创建者
chmod +/-权限,+/-权限 文件名
r---4
w--2
x---1
数字更改权限
523 rx-wx-w-
在数字前加R 递归修改权限,该目录和其子目录下权限同时被修改
对文件file各个权限的内容是:
r:cat/more/less/head/tail
w.vim
x: script/command
对目录directory
r:ls查看
w:touch/mkdir/rmdir/rm 创建删除
x:cd 进入目录
一般,对目录来说rx同时存在
文件搜索命令
find辅助查找
locate 文件名
能显示出文件所在路径,速度非常快,因为使用 locate locate 可以找到文件资料库
但是不是实时查找,实时使用find ,但是可以使用updatedb更新再进行查找
大小写可以加一个 -i 命令
精准查找
which 命令
如 which useradd
得到/usr/sbin/useradd
alias 查找别名 可以进行执行确认
whereis useradd where可以列出帮助文档
grep
在文件内容中搜索内容
grep 关键词 文件//使用i不区分大小写 ^# 把注释行全部去掉
find locate -i updatedb which whereis grep -i -v
帮助命令 当有些不知明的命令查找帮助信息
man ls
info
最常用 的信息是 第一行 解释命令的
man直接加上配置文件名称 而more加上文件绝对路径
使用man查看所有的信息,而很多信息是用不着的,使用简短命令更加快捷有效
whatis 命令 查看命令的简短信息 apropos 配置文件 查看配置文件的简短信息
touch --help
help 可以查看shell内置命令 shell是只命令解释器
用户管理命令
useradd 添加用户
passwd 用户名 设置和修改密码
who 当前用户信息
w 所有用户信息
压缩命令
对文件进行压缩
gzip 文件名
常见压缩格式 .gz
在Linux中压缩后源文件就消失的
对目录进行压缩
tar -cvf 压缩文件名 被压缩目录名//cvf c表示打包 v表示详细 f必须加
tar -cvf Japan.tar Japan //不会删除源文件Japan
打包同时进行压缩生成 .tar.gz的文件
tar -zcf Japan.tar.gz Japan //z 表示压缩
压缩解压 tar
tar -zxvf Japan.tar.gz
zip 压缩后能保留原文件
unzip 解压缩
Linux中的压缩格式Windows中都有,反过来不成立
gzip的升级版bzip2
bzip2 -k压缩后仍保留原文件
压缩后文件名。bz2
解压缩 bunzip2
网络命令
write 用户名
给某用户发送信息
wall 给所有用户发信息
ping
ifconfig 临时改变IP地址
mail 不需要在线就能发送
last 查看过去登陆信息,检测用户登陆的信息
traceroute 查看到目标网站的路径
netstat
-t TCP
-u UDP
-l 监听
-r 路由
-n 显示IP地址和端口号
netstat -tlun 查看本机服务和端口
netstat -an 查看所有服务
netstat -rn 查看本机路由表
setup命令配置网络
mount挂载命令
mount 【文件系统】设备文件名 挂载点 外接硬件一般才使用
关机和重启命令
shutdown -h/-r now/15:30 //-h关机 -r重启
runlevel
VIm文本编辑器
常用操作
vim没有菜单,只有命令
进入 vi filename
命令模式
iao 进入插入模式输入内容
a 在光标所在字符后插入
A 行末
i 字符前
I行首
o下行开始写
O上行开始写
:set nu 显示行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG到第n行
:n到第N行
$ 移至行首
0 移至行尾
删除命令
x 删除光标所在字符
nx 后n个字符
dd/ndd 删除光标所在行/后n行
dG 光标后所有内容
D 删除光标所在处到行尾内容
n1,n2d 删除指定范围的行
yy-p/p 复制当前行到某行上面和下面
dd-p/p 剪贴
r/R 替换当前字符/后面所有
u取消上一步操作
查找替换
搜索
/关键词 n
替换
:范围/要替换关键词/替换为的关键词
保存退出
:w 保存文件
:w newfilename 另存为指定文件
:wq/ZZ 保存退出
:wq! 强制保存
vim使用技巧
-r 导入到当前文件
定义快捷键 :map 快捷键 触发命令
:ab a,b
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
四、linux 软件安装
----------
RPM包管理-rpm命令管理
命名规则
包全名:软件包名-软件版本-软件发布次数-适合的Linux平台-适合的硬件平台=rpm包扩展名
没有安装的包使用包全名并且要注意路径
操作已经安装的软件包时,使用包名
手工操作 rpm
安装
rpm -ivh 包全名
-i install
-v verbose 显示详细信息
-h hash 显示进度
--nodeps 不检测依赖性
-Uvh 升级 //u- upgrade更新
-e 包名 卸载 erase
查询
rpm -q 包名
-qa 查询全部已安装包
-qi 查询已安装包信息
-p 包全名 查未安装包信息
-ql 查询包位置
-qf 查询文件属于哪个包 如果文件不是通过包安装产生则查询不到,如自己写的
-R 查询软件包的依赖性
依赖性
树形依赖
环形依赖
模块依赖:模块依赖查询网站
校验
将一个现在的包与刚开始安装的包进行比较,查找有什么不同
输出结果,可以查找对应表看改变了什么内容
如:S 文件大小是否改变
5 文件完整性
T 修改时间
文件提取
常用用途是文件修复 过程是误删某个文件后,查找被删除文件的包的位置(可以Google),找到包里的信息再提取(cp)到被删除位置
在线管理 yum在线管理 //解决依赖性
可以使用光盘做yum/网络yum源
yum命令
查询
yum list
软件包安装
yum -y install gcc //gcc是C语言编译器
卸载
yum -y remove gcc
软件包组安装与卸载
yum groupinstall "软件包名"
yum groupremove "软件包名"
光盘yum源搭建
优点是下载更快,使用更方便,但软件版本不能更新。
挂载光盘→让网络yum源失效→修改光盘yum源文件
让网络yum源失效 :通过mv命令 mv CentOS-Base.repo \ CentOS-Base.repo.bak 将repo文件改为bak文件使其失效
主要是通过将 enabled打开,即使其值从0变为1
源码包安装管理
--源码包与RPM包的区别
--概念区别
源码包能查看源代码,RPM包不能查看源代码
--安装位置区别
RPM包安装再默认位置中
可以使用 service httpd restart这样的命令
源码包是指定安装位置 一般是 /usr/local/软件名/
只能使用绝对路径
--源码包安装
apache安装
https://www.osetc.com/archives/20369.html
脚本安装--类似Windows下软件的安装方式
webmin 软件
针对小白使用
Apathe的安装问题:
致命错误 expat.h
致命错误 pcre.h
需要安装插件库不足
bulid/rules.mk:75: all-recursive
可能是httpd的版本与Linux系统版本不兼容
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
五、Linux用户管理
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
六、Linux权限管理
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
七、Linux文件系统管理
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
八、Linux编写shell脚本
shell 交互层
Windows的图形交互界面 Linux中的终端
也是一种脚本编程语言
shell脚本的执行方式
echo 输出
bash基本功能
history 可以看到写过的指令
!n 重复调用某条命令
shell基本功能
别名 alias alias alias A ='B' 使用简单A就能执行和复杂的B相同的功能
执行顺序
绝对路径/相对路径>alias别名>Bash内部命令>环境变量定义的目录下的第一个命令(比如别名覆盖前的系统命令)
如果要使alias永久生效 则在/root/.bashrc中添加别名 否则只是暂时生效
常用快捷键
ctrl+A 把光标移动到开头
ctrl+E 把光标移动到行尾
ctrl+C 结束当前命令
ctrl+U 删除或贴切光标之前的内容
ctrl+K 光标之后的内容
ctrl+Y 粘贴
ctrl+R 搜索
ctrl+D 退出终端
输入重定向
使用文件作为输出源 不常用
输出重定向
只有命令可以输出内容的时候可以使用输出重定向 常把错误输出到屏幕改为输出到文件保存
将正确和错误输出保存在同一文件中
格式:命令 &>> 文件
可以重定向到 /dev/none中(垃圾箱)
将不同输出保存至不同文件中
命令 >> 保存正确文件 2>> 保存错误文件
dd命令 磁盘复制
date ; dd if=/dev/zero of=/root/textfile bs=1k count=100000 ; date
将A文件复制为B文件 并记录创建该文件的时间
多命令顺序执行
A ; B AB顺序执行
A && B A不报错B再执行B A报错B不执行
|| 逻辑或 A成功执行B不执行
管道符 |
A | B 命令A作为命令B的输入对象,但A命令一定要能正确执行并有正确输出
grep 将搜索出的关键词用颜色标出
netstat -a | grep ESTABLISHED 将连接的信息都显示出来并标红
通配符
? 匹配一个字符
* 匹配任意字符
[abc] abc中任意一个字符
[^0-9] 匹配不是数字的字符
echo '$name' 输出字符串
echo "$name" 输出name的值
echo $()// 将命令执行再输出
Bash变量
变量是计算机内存的单元,其中存放的值可以改变
变量名不能以数字开头
默认变量类型是字符串类型,如果要进行数值运算,则必须将变量指定数值型
环境变量大写,
变量查看 set
变量删除 unset name
用户自定义变量
本地变量
只能在当前shell 执行
环境变量
主要保存和系统操作环境相关的数据
可以在子shell执行
常用环境变量
pstree 查看当前进程
PATH="$PATH":/root 将root目录添加到环境变量中
PSI 命令提示信息 提示当前用户名、文件路径等,可以进行修改
位置参数变量
向脚本中传递值的变量
$n
$0为命令本身 $1-$9代表第一个到第九个参数,10以上的参数用 ${10}
$* 代表命令行中所有的参数,$*把所有的参数看成一个整体
$@ 也代表命令行中所有的参数,但把每个参数区别对待
$# 这个参数代表参数个数
预定义变量
bash已经定义好的变量,作用也是固定的,只能赋值
预定义变量
$? 判断上一条命令是否正确执行
$$ 显示当前进程号(PID)
$! 后台运行的最后一个进程的进程号
接受键盘参数 read[选项]【变量名】
-p 在等待read输入时,输出提示信息
-t 描述 在t时间内,read命令会一直等待用户输入
-n read接受指定的字符数,就会执行
-s 隐藏输入,适用于机密信息输入
数值运算
declare 声明变量类型
export cc 先将cc设为环境变量
decalre -i cc 将cc变量声明为数值型
-x 声明为环境变量
-p 显示变量类型
- 设定类型属性 + 取消类型属性
$((运算式))+$((运算式))
变量替换和测试
表格留好,不需要背,用的时候参考即可
环境变量配置文件
永久性更改保存环境变量
方法
source 配置文件
. 配置文件
现环境变量的保存位置
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
对所有用户生效
Surene/.bash_profile
Surene/.bashrc
对当前用户生效
环境变量配置
字符截取
cut字段提取命令
不能使用在以空格为分隔符的字符串
-f 提取第几列
-d 分隔符
printf命令
awk中最常用的格式化输出,需要调整输出格式
%ns 输出字符串,n是数字指代输出几个字符
%nf 输出整数 n是数字代表输出几个数字
%m.nf:
awk命令
格式
awk '{} {}' 文件 //{}表示一个动作,可以是函数和操作等
awk '{printf $2"\t" $4"\n"}' student.txt=awk '{print $2"\t" $4}' student.txt
printf与print的差别是 print自带一个换行符\n
FS内置变量 用来指定分隔符 默认分隔符是空格 可以根据文本类型做出修改
可以指定为冒号形如{FS=":"}
BEGIN 在命令开始之前执行
END 在命令结束之后执行
awk'BEGIN {FS=":"} {print $....} END {}' student.txt
sed命令
sed是一种轻量级流编辑器,可以将数据或文件(尤其是文本文件),进行选取替换删除新增的命令
sed 选项 '[动作]' 文件名
选项 -n 把所有数据输入到屏幕 如果加入此选择,则只会把经过sed命令出来的行输出到屏幕
-e 运行对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取数据的文件
sed不会对文件本身进行操作,只对输出结果进行操作,并显示在屏幕上,所以今生使用-i
字符处理命令
sort 排序命令
默认使用字母排序
test 判断
test不会返回值 但执行结果有值,可以用$?进行查看,0代表为真,1代表为假
可以使用下面的操作直接输出内容进行判断
[] && echo yes || echo
-f -d .... 判断文件类型是否为空等
数值判断
-ep 判断相等
-ne 判断不等
-gt 判断大于
-lt 判断小于
-ge 大于等于
-le 小于等于
字符串判断
-z 是否为空
-n 是否为非空
== 是否相等
+!是否不等
逻辑控制
if case for while util 略
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
九、Linux服务管理
RPM包默认安装的服务
独立服务 //速度快
启动 : 服务绝对路径 start service 服务 start //原理是去找文件
自启动 :chkconfig 运行级别 独立服务名 on/off
修改/etc/rc.d/rc.local文件 推荐使用 只要在开机后该文件就会被阅读,将命令写入文件中,实现自启动
ntsysv 命令管理 跟setup类似的图形管理节目 用来开关服务 红帽子专属,可以centos中可以yum
后台管的 //服务急于xinetd 的服务 超级守护进程 不占内存 但速度慢
源码包安装的服