为什么需要使用linux操作系统?
- 性能问题:windows服务器操作系统不如linux高
- 稳定性问题:
- 底层架构:linux更加稳定,其开机时间可以达到好几年不关机
- 开源:因为开源,人人都可以看到源代码,就可以为其提供自己的补丁,补丁可以提高稳定性和安全性
- 安全性问题:
- linux操作系统,相对于windows操作系统更加安全
- 远程管理方面:
- windows:输入mstsc
- windows不及linux操作高效
- 服务器价格昂贵:
- 需要对资源进行充分利用,充分把计算机资源用到项目上(访问并发、性能),而不是把资源浪费在图形化界面或者方面程度上
linux一切皆文件
# 指令主体 [选项] [对象]
ls
:list列出文件
ls 路径
: 列出指定路径下的所有文件(./当前目录下; …/上级目录下; /表示根路径)
ls -l 路径
:表示以详细列表的形式展现所有信息
ls -la 路径
:显示所有文件包含隐藏文件
ls -lh 路径
:显示问文件大小可读性较高的形式
第一列的第一位:d表示文件夹,-表示文件
linux中的隐藏文件都以.开头
蓝色的名称表示文件夹,黑色的表示文件,绿色的表示全部权限
pwd
:print working directory打印当前路径
cd 路径
: change directory切换当前工作目录
cd ~
:切换到当前用户的根路径
mkdir 路径
:make directory 创建目录
mkdir -p 路径
:可以一次性创建多层不存在路径
cp 被复制的文件路径 复制目标路径
:copy复制(复制过程支持改名)
cp -r 被复制的文件夹路径 目标路径
:-r表示递归复制,否则目录将被忽略
rm 文件
:移除/删除命令
rm -f 文件
:-f(force强制)强制删除命令(没有中间的提示了)
*
:通配符,表示任意字符
vim 文件路径
:打开一个文件(文件可存在也可以不存在)
点击esc,shift+冒号,输入q 退出 回车
:退出
vim 文件路径
:打开指定的文件vim +数字 文件路径
:打开指定的文件,并且将光标移动到指定行vim +/关键词 文件路径
:打开指定的文件,并且高亮显示关键词vim 文件路径1 文件路径2 文件路径3
:同时打开多个文件补充:
esc
:w
——保存:w 路径
——另存为:q
—— 退出文件:wq
—— 保存并退出:q!
—— 强制退出:! 外部命令
/关键词
:查找关键词,会高亮显示:nohl
:nohightlight 取消高亮:s/搜索的关键词/新的内容
:替换光标所在行符合条件的第一个:s/搜索的关键词/新的内容/g
:替换光标所在行的全部符合条件的内容%s/搜索的关键词/新的内容/g
:替换光标所有符合条件的内容:set nu
:显示行号:set nonu
:取消显示行号i
:在光标前插入inserta
:在光标后插入after末行模式下:
:syntax on
:代码着色:syntax off
:关闭代码着色>
: 覆盖输出,会覆盖原先的问题文件
>>
: 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
cat 文件路径
:直接打开一个文件
cat 待合并的文件路径1 待合并的文件路径2… 待合并的文件路径n > 合并之后的问文件路径:
locate 文件名
:查找文件
find 路径 -name 值
:按照文档名称进行搜索,支持模糊搜索
find 路径 -type 值
:按照文档类型进行搜索(- 用f替换表示文件 或者 d文件夹)
type后面只能是f或者d
ifconfig
:获取网卡信息
inet addr
显示的是IP地址
reboot
:重新启动计算机
reboot -w
:模拟重启,但是不重启(只写关机与开机的日志信息)
shutdown -h now
:立即关机
shutdown -h 23:10 "关机提示"
:指定时间关机
uptime
:输出计算机的持续在线时间(从开机到现在运行的时间)
uname
:获取计算机操作系统的类型
uname -a
:获取全部的系统信息(类型,主机名,内核版本,发布时间,开源计划)
yum install lrzsz
安装lrzsz工具
将文件上传到本地,默认上传到当前目录
rz
sz etc/1.txt
free -m
:查看内存使用情况,-m以MB为单位查看
剩余真实可用内存为827MB
head -n 文件路径
:不指定n(数字),默认查看前10行
tail -n 文件路径
:不指定n,默认查看末尾10行
tail -f 文件路径
:动态查看文件
tail -F 文件路径
:动态查看文件
less 需要查看的文件路径
:以较少的内容进行输出,回车,空格键,上下键查看更多内容
wc -lwc
:统计文件内容信息,包含-l(lines)行数,-w(words)单词数,-c(bytes)字节数
date
: 输出当前日期
date +%F
:以特定格式显示当前日期
date "+%Y-%m-%d"
:以特定格式显示当前日期
date "+%F %T"
:以特定格式显示当前日期
date "+%Y-%m-%d %H:%M:%S"
:以特定格式显示当前日期
date -d “-1 day” “+%F”:前一天的日期
cal -1
:直接输出当前月的日历
cal -3
:输出上一个月,本月和下一个月
cal -y 年
:输出全年的日历
clear
:清除终端中已经存在的命令和结果,或者快捷键ctrl+L
|
:过滤,特殊,扩展处理
ls |grep e
:过滤出当前目录下包含e的文件和文件夹,grep过滤
cat 路径|less
:作用相当于less
ls \root|wc -l
:统计指定路径下的文件数
hostname
:读取完整的服务器主机名
hostname -f
:读取主机名中的FQDN全限定域名
hostnamectl
:查看当前主机信息
hostnamectl set-hostname 新名字
:修改主机名
bash
:最后输入bash立即生效
id
:用于查看一个用户的基本信息,如果不指定,则默认当前用户
id 用户名
:查看指定用户的基本信息
验证用户信息:通过文件cat /etc/passwd
验证用户组信息:通过文件cat /etc/group
ps:查看服务器的进程信息
ps -e:列出全部的进程
ps -f :显示全部的列
uid:该进程执行的用户id
pid:进程id
ppid:进程的父级进程,如果一个程序的父级进程找不到,该程序为僵尸进程
c:cpu占用率,百分数
stime:进程启动时间
tty:终端设备,发起该进程的设备识别符号,如果显示?表示该进程并不是由终端设备发起
time:进程的执行时间
cmd:该进程的名称或者对应的路径
top
:查看服务器的进程占的资源(退出:按q)
top,按下M
:结果按照内存占用从高到低排序
top,按下P
:结果按照CPU占用率从高到低排序
top,按下1
:当服务器含有多个CPU的时候,可以切换显示各个CPU的详细信息
zombie:僵尸进程个数
PID:进程id
USER:该进程对应的用户
PR:优先级
NI:用户进程空间内改变过优先级的进程占用CPU百分比
VIRT:虚拟内存
RES:常驻内存
SHI:共享内存
计算一个进程实际使用的内存 = 常驻内存 - 共享内存
s:表示进程的状态,sleep,running
%CPU:表示CPU的占用百分比
%MEM:表示内存的占用百分比
TIME:执行的时间
COMMAND:进程的名称或者路径
service 服务名 start/stop/restart
:控制一些软件的启动/停止/重启
service httpd start
:启动apache服务
systemctl start httpd
:启动apache服务
kill 进程id
:杀死进程
killall 进程名称
:杀死进程
kill -9 进程名称
:强制杀死进程
netstat -tnlp
:查看网络的连接状态
-t:只列出tcp协议的连接
-n:表示将地址从字母组合转化为ip地址,将协议转化为端口号
-l:过滤出状态列中中其值为listen监听中的
-p:表示显示发起连接的进程pid和进程名称
fdisk 磁盘路径
:对选定磁盘进行分区,例如fdisk /dev/vdb
m
:查看帮助n
:创建新分区e
键进入启动项选择,选择kernel选项 single
,按回车,重新进入启动项选择b
进入单用户维护模式passwd
命令,修改密码man 命令
:manual手册(包含了linux中全部命令手册)
/etc/inittab 文件查看init命令
init 3
:进入纯命令模式
init 5
:进入桌面模式
- /etc/passwd 存储用户的关键信息
- /etc/group 存储用户组的关键信息
- /etc/shadow 存储用户的密码信息
useradd -g 用户名
:指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
useradd -G 用户名
:指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
useradd -u 用户名
:uid,用户的id,系统默认会从500之后按照顺序分配uid
查看用户的主组可以查看/etc/passwd文件,查看附加组可以查看/etc/group文件
usermod -g 用户名
:usermodify指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
usermod -G 用户名
:指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
usermod -u 用户名
:uid,用户的id,系统默认会从500之后按照顺序分配uid
usermod -l 新用户名 旧用户名
:修改用户名
linux不允许没有密码的用户登录到系统,因此前面创建的用户目前处于锁定状态,需要设置密码之后才能登录计算机
passwd 用户名
:设置密码
/etc/shadow
:查看用户的密码信息
su 用户名
(不写默认切换到root):switch user
userdel -r
:删除用户,-r删除用户的同时把家目录页删除
登录用户无法删除,先用kill登录用户的全部进程
ps -ef|grep 用户名
:查看进程(上图出错)
kill 进程号
:杀死对应用户的进程
userdel -r 用户名
:删除用户
service network restart
:重启网卡
如果分支版本没有service命令,则有一个共性目录:/etc/init.d 放着很多服务的快捷方式
/etc/init.d/network restart
:重启网卡
ifdown 网卡名:停止某个网卡
ifup 网卡名:开启某个网卡
ssh (secure shell,安全外壳协议):该协议有2个常用的作用,远程连接协议,远程文件传输协议,默认协议端口号22
- 如果需要修改端口号,就要修改ssh服务配置文件,路径:/etc/ssh/ssh_config
终端设备使用了ssh协议(远程连接,远程文件传输)
hostname:查看主机名
hostname -f:全限定域名FQDN
①hostname 新主机名
: 临时设置主机名
②永久设置主机名
找到主机名的配置文件: /etc/sysconfig/network
修改HOSTNAME值
③设置主机名之后,还没有生效:修改linux服务器的hosts文件: /etc/hosts
在localdomain4 后面加
chkconfig --list
:列出开机启动列表chkconfig --del 服务名
:删除开机启动启动管理服务chkconfig --add 服务名
:添加开启启动管理服务chkconfig --level 连在一起的启动模式 服务名 on
:设置服务在某些模式下开机启动chkconfig --level 35 服务名 off
:设置服务在3,5模式下开机不启动ntp作用:主要用于对计算机的时间同步管理操作
同步服务器时间:
防火墙:防范一些网络攻击,有软件防火墙和硬件防火墙之分。
在当前的centOs6.5中防火墙有一个名称:iptables
centos7.x中默认使用的是firewalld
ps -ef | grep iptables
:查看iptables进程
chkconfig --list | grep iptables:查看开机启动项
service iptables start
:iptables服务启动
service iptables stop
:iptables服务关闭
service iptables restart
:iptables服务重启
/etc/init.d/iptables restart
:iptables服务启动
service iptables status
:查看iptables状态
iptables -L -n
:查看iptables规则
iptables命令:
- -i:表示将规则放到最前面
- -A:add 添加规则
- INPUT:进站请求(OUTPUT 出站请求)
- -p:protocol指定协议,tcp/udp/icmp
- –dport:指定端口号
- -j:指定行为结果,允许accept/禁止reject
- 保存规则设定操作:
/etc/init.d/iptables save
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
:允许本地回环接口(运行本机访问本机)iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
:允许已建立的或相关连的通行iptables -A OUTPUT -j ACCEPT
:允许所有本机向外的访问iptables -A INPUT -p tcp --dport 22 -j ACCEPT
:允许访问22端口iptables -A INPUT -p tcp --dport 80 -j ACCEPT
:允许访问80端口iptables -A INPUT -p tcp --dport 21 -j ACCEPT
:允许访问ftp服务的21端口iptables -A INPUT -p tcp --dport 20 -j ACCEPT
:允许ftp服务的20端口iptables -A INPUT -j reject
:禁止其他未允许的规则进入iptables -A FORWARD -j REJECT
:禁止其他未允许的规则访问作用:
- rpm的作用类似windows上的电脑管家中的软件管理等,
- 对linux服务器上的软件包进行对应管理操作:查询、卸载、安装
rpm -qa | grep 关键词
:查看软件包(-q:查询query,-a:全部all)
rpm -e 关键词
:卸载某个软件
rpm -e 关键词 --nodeps
:忽略依赖关系,强制卸载
去官网去下载
从光盘中读取(或者镜像文件)
扩展:查找块中设备的信息:lsblk
(list block devices),mountpoint 挂载点,类似windwos的盘符
光盘的挂载与解挂:
umount 当前设备的挂载点(即路径)
mount 设备原始地址 要挂载的位置路径
(设备原始地址:统一都在/dev下,然后根据大小确定具体name值,挂载目录一般都在mnt下)rpm -ivh 软件包完整名称
:安装软件(-i:install安装,-v:进度条,-h:以#形式显示进度条)
crontab -l
:list列出指定用户的计划任务列表
crontab -e
:edit编辑指定用户的计划任务列表
crontab -u
:user指定用户名,如果不指定,默认当前用户
crontab -r
:remove 删除指定用户的计划任务列表
计划任务一行为一个计划:
**分 时 日 月 周 需要执行的命令**
例如: 0 0 * * * reboot 每天0时0分重启
*表示通配符,
-表示连续区间,
/表示每多少个,如每10分钟 */10,
,表示多个取值
*/1 * * * * date "+%F %T" >> /root/RT.txt
:每隔1分钟往root家目录中的RT.txt中输入当前的时间信息
tab键:补全命令
linux系统一般将文件可存/取访问的身份分为3个级别:owner,group,others,且三种身份各有read,write,execute等权限。
ls -l 路径
:查看详细信息(-a 显示隐藏文件)
ll 路径
:等价于ls -l,查看详细信息
首字母d是文件夹,-是文件
rwx顺序不变,-表示没有对应权限
- 权限操作者:root用户 或者 owner用户
- 不指定谁,默认all
- linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才能删除
chmod -R 权限模式 文件/文件夹路径
:权限设置,-R表示递归设置权限(用于文件夹权限)
① chmod u+x,g+rx,o+r 1.cfg
:给1.cfg文件(-rw------)设置权限,所有者拥有所有权限,同组用户拥有读和执行权限,其他用户只读权限
② chmod u=rwx,g=rx,o=r 1.cfg
:①的同等功能
rwx 二进制形式 ,011=3可写可执行
① chmod 754 1.cfg
:给1.cfg文件(-rw------)设置权限,所有者拥有所有权限,同组用户拥有读和执行权限,其他用户只读权限
属主:所属的用户(文件的主人)
属组:所属的用户组
chown -R 用户名 文件夹路径
:递归更改文件所属用户
chown 用户名 文件路径:
更改文件所有者
chgrp -R 用户组名 文件夹路径
:递归更改文件所属组
chgrp 用户组名 文件路径:
更改文件所属组
chown -R 用户名:用户组名 文档路径
: 同时该用户和组名
sudo(switch user do),让root用户事先定义某些特殊命令谁可以执行
sudo配置文件:/etc/sudoers
visudo
打开,之后使用方法和vim一致在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径,路径可以使用
which 指令名称
查看
输入visudo添加命令:
为用户添加完命令之后,执行的时候要加 sudo useradd 用户名
,sudo passwd 用户名
passwd root命令不可执行 !/usr/bin/passwd root
ping 主机地址
(ip,主机名,域名等):检测当前主机与目标主机之间的连通性
与windows的区别:linux数据包默认一直发送(类似windows中的 ping 地址 -t
),windows默认发送4个数据
netstat -tnlp
:查看网络的连接信息(-t:tcp协议,-n:将字母转化为数字,-l:监听,-p:进程相关信息)
netstat -an
:-a表示全部
traceroute 目标主机
:查看当前主机与目标主机之间所有的网关(路由信息),会给沿途各个路由器发送icmp数据包【类似windows的tracert 目标主机
】
地址解析协议,arp(address resolution protocol):根据IP地址获取MAC地址的协议
arp -a
:查看本地mac表
arp -d ip地址
:删除mac表中某条记录
作用:抓取数据包
tcp 协议
tcpdump port 端口
tcpdump host 地址
tcpdump -i 网卡设备名
shell是一种C语言编写的程序,是命令语言,也是一种程序设计语言。
#!/bin/bash
:【注释】指定告知系统当前这个脚本要使用的shell解释器
文件命名规范:文件名.sh
.sh 是linux下bash shell的默认后缀
① 创建.sh文件:touch
或者vim
② 编写shell代码
③ 执行shell脚本:脚本必须得有执行权限
#!/bin/bash
useradd shelltest
touch /home/shelltest/try.html
./test2.sh
/bin/bash test2.sh
双引号能够识别变量,双引号可以实现转义
单引号不能识别变量只能直接字符串式输出,单引号不能转义
反引号(esc键下方的那个键):当脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用反引号
`
unset 变量名
:删除变量
read -p 提示信息 变量名
:接收输入,将输入作为参数赋给变量
if condition
then
command1
command2
...
fi
单行写法:if[condition];then command;fi
if condition
then
command1
command2
...
else
command
fi
if condition1
then
command1
elif condition2
then
command2
...
else
commandN
fi
expr
表达式计算工具:用反引号括起来,表达式和运算符之间要有空格,例如:var=`expr`空1空+空2
注意空格,运算符前后要有空格
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
-eq:equal
-ne:not equal
-gt:great than
-lt:less than
-ge:great than or equal
-le:less than or equal
接收命令参数:
例如:./test.sh a b c
通过脚本 $1 获取a值,$2 获取b值, $3 获取c值
user -add 添加用户
user -del 删除用户及其家目录
配置操作:指定软件的安装目录、需要的依赖在什么地方、指定不需要可选依赖、配置文件的路径、通用数据存储位置等等
- 指定安装的路径:
--prefix=路径
- 需要依赖的路径:
--with-PACKAGE 名=包所在位置
- 不需要依赖:
--without-PACHAGE 名
例如:
rpm相关指令:
yum list
:列出当前以及装的和可以安装的全部软件yum search 名
:搜索指定关键词的包yum -y install 包名
:安装指定的包 -y表示默认允许yum -y update 包名
:更新指定的包,不指定包则更新全部软件yum -y remove 包名
:卸载最好不要写-y,可以再次确认是否删除yum install mysql-server
service mysqld start
:启动mysql服务(加d表示守护进程)
mysql_secure_installation
:启动mysql,可修改root密码
mysql -u 用户名 -p
:进入mysql
exit
:退出mysql
数据库存储目录:/var/lib/mysql
配置文件:/etc/my.cnf
show databases;
显示mysql所有的数据库
create database;
库名; 创建新的数据库
drop database;
库名; 删除已有数据库
use 库名;
使用指定的数据库
delete from 表名;
数据表内容数据清掉,自增id会保留
truncate table 表名;
自增id也一同会被清掉
mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径];
导出所有数据库
mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径];
导出数据和数据结构
mysqldump -u [数据库w用户名] -p -t [要备份的数据库名称]>[备份文件的保存路径];
只导出数据不导出数据结构
mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径];
导出数据库中的Events
mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径];
导出数据库中的存储过程和函数
mysql>source [备份文件的保存路径];
从外部文件导入数据库中
mysql -u root –p < [备份文件的保存路径];
从外部文件导入数据库中
mysqldump -u用户名 -p数据库名 > 导出的文件名;
备份数据库
flush privileges
:刷新权限表
Nginx:是一款比较流行的web服务器软件,类似于Apache
① 下载nginx:nginx下载官网,选定版本,右键复制地址,
在/usr/local/src下安装:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.18.0.tar.gz
② 解压安装包tar -zxvf nginx-1.18.0.tar.gz
③ 安装pcre:
cd /usr/local/src/
:切换目录
wget https://sourceforge.net/projects/pcre/files/pcre/8.35/pcre-8.35.tar.gz --no-check-certificate
:获取安装包
tar zxvf pcre-8.35.tar.gz
:解压安装包
cd pcre-8.35
:切换到解压后pcre目录
./configure
:配置pcre
make && make install
:编译安装pcre
pcre-config --version
:查看pcre版本
④ 安装zlib : yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装ssl:yum -y install openssl openssl-devel
⑤ 配置nginx
cd nginx-1.18.0
:进入nginx解压目录
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35/
–prefix指定在安装目录:/usr/local/nginx
⑥ 编译安装nginx
make && make install
:编译安装
/usr/local/nginx -v
:查看nginx版本
/usr/local/nginx/sbin/nginx
:启动nginx
/usr/local/nginx/sbin/nginx -s reload
:重载,配置文件修改后执行
/usr/local/nginx/conf/nginx.conf
:配置文件
如果80端口被占用,关闭apache:service httpd stop