Skip to content

jikechenhao/linux_course

 
 

Repository files navigation

###运行级别和启动流程

只有了解linux的启动流程才能更好的去优化和配置Linux,譬如说一台服务器我为什么要保证3,5启动软件即可,是怎么启动的呢?

  1. bios找到mbr主引导区,这个东西才512字节,深入的可以查询一下
  2. 进入grub界面找启动内核
  3. 读取kernel内核文件 /boot/vmlinuz-*
  4. 读取init的镜像文件 /boot/initrd-*
  5. init读取/etc/inittab
  6. 读取启动级别(id:3:initdefault)
  7. 读取/etc/rc.d/rc.sysinit,完成时间、主机名称,还要分区表/etc/fstab
  8. 读取/etc/rc.d/rc脚本,通过脚本转换3级别,然后启动/etc/rc.d/rc3.d/下所有S来头的服务,不启动目录下K开头的服务
  9. 进入登录界面

#####我们服务器设置的一般控制inittab来控制是图形界面还是终端 sudo init 0 关机

>vim /etc/inittab	#init启动时候加载的启动级别

0 关机
1 单用户
2 不支持nfs(网络文件系统)
3 终端页面
4 未被使用
5 图形界面
6 重启

当你是终端的时候你会发现你登录的是3级别,如果是X11图形界面的时候是5,可以修改id:3:initdefault,来修改启动级别

如何设置开机启动和开机启动的原理

我们如上还是终端启动,我们就进入/etc/rc.d/rc3.d 我们看到S开头和K开头,你可以理解成start和kill s开头的都启动K开头的都是不启动 ubuntu在 /etc/rc3.d/

#centos设置开机启动
>chkconfig mysql on				#设置开机启动
>chkconfig --list|grep mysql 	#查看哪些启动级别,发现除了0,1,6关闭其他都开启
>cd /etc/rc.d && ls -l			#rcx.d是启动级别
>cd rc3.d && ll|grep mysql		#显示如下,当然你进入2,4,5也是一样的,这就是说为什么服务器要保证开机3,5启动
lrwxrwxrwx  1 root root 16 3月  14 19:22 S64mysqld -> ../init.d/mysqld

#ubuntu设置开机启动
>sudo apt-get install dialog rcconf     #安装rcconf
>sudo rcconf                            #出现图形界面可以设置

一般我们使用apt-get或者yum安装的,也就是仓库源安装的都可以使用service XXX start,其实这种东西存储在/etc/init.d/文件夹下,你可以自己写脚本,放到/etc/init.d/使用chmod a+x xxx给权限,然后service xxx start启动,譬如我们二进制安装的nginx,然后自己手动写个nginx启动脚本。

rcconf


###压缩与解压

这个我们需要会几个常用的压缩包的解压和压缩,解压是因为万一你有二进制包要安装,你带会解压吧!压缩-你要备份一个网站不可能一个文件一个文件备份吧所以学习压缩,这里边我讲下常用的tar tar.gz常见,.tar.bz2我记得php下载官网好像就有这个格式,为什么还学zip,兄弟,因为windows平台对zip支持很好,万一你要下载网站日志到windows上分析呢是吧~ widuu建议这几个必会

####tar压缩包

>tar cf file.tar file
#联想记忆
#c create
#f file 

>tar xf file.tar -C /data
#x extract 记住x
#-C 这是解压到哪里去

#查看压缩包
>tar tf file.tar.gz

####tar.gz压缩包

>tar czf file.tar.gz file
#联想记忆
#c create
#z gz
#f file 

>tar zxf file.tar.gz -C /data
#x extract 记住x
#-C 这是解压到哪里去

#查看压缩包
>tar tf file.tar.gz

####zip压缩包

>yum install unzip zip -y #安装包
>unzip file.zip           #解压
>unzip -l file.zip        #查看压缩包中的内容
>zip  file.zip file       #压缩

####tar.bz2

>tar jxf file.tar.bz2      #解压
>>tar tf file.tar.bz2      #查看压缩包内容
>tar jcf file.tar.bz2 file #压缩

###网络配置

####1. 修改ip 只能暂时的,重启就失效了

ifconfig eth0 192.168.1.1
ifconfig eth0 192.168.0.2 netmask 255.255.255.0

#修改dns
route add default gw 192.168.1.1

####2. 修改网络配置文件

现在用的最多的应该就是centos和ubuntu这两个吧,我就拿这两个做讲解,这个拖拖的你带会配置万一让你修改dhcp到static,我擦 修改错了,这个除了机房能控制,你购买的代理商都很难再弄上了~~~ #centos配置 >cd /etc/sysconfig/network-scripts/

#centos配置

>vim /etc/sysconfig/netword-scripts/ifcfg-eth1 #针对自己的网卡

DEVICE=eth1  								#网卡名称
TYPE=Ethernet								#网卡类型
IPADDR=192.168.1.1							#IP地址
NETMASK=255.255.255.0						#子网掩码
GATEWAY=192.168.1.1							#网卡
DNS1=202.102.224.68							#DNS
DNS2=8.8.8.8
ONBOOT=yes									#主机启动加载	
NM_CONTROLLED=yes							#实施生效,修改后不需要重启网卡立即生效
BOOTPROTO=static							#静态ip

>service network restart					#重启网卡

>vim  vim /etc/resolv.conf					#修改DNS
	
nameserver 202.102.224.68
nameserver 8.8.8.8

#ubuntu 配置
>vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.108
netmask 255.255.255.0
gateway 192.168.1.1

#修改dns
vim /etc/resolv.conf
nameserver 8.8.8.8

#重启生效
/etc/init.d/networking restart

###防火墙设置

####iptables

#开启防火墙
>service iptables start

#开机启动
>chkconfig iptables on           

#保存策略文件在 /etc/sysconfig/iptables -- centos
iptabels [-t 表名] 
>iptables -t nat -L 			#查看nat表
>iptables -L	 				#查看防火墙,默认是filter

>iptables -F					#删除防火墙 -X清除自定义链接 -Z清除所有链统计

>service iptables save		#保存防火墙策略
>service iptables restart	#重启
>iptables -I INPUT -s 0.0.0.0 -j ACCEPT

iptables 
	-A 追加规则链			再最后加入此规则
	-I INPUT 			插入INPUT
	-D 链 				删除链
	-P 如果策略值缺省就强制使用此策略链
	-i 输入网卡
	-o 输出网卡
	-p 协议
	-s 源 ip
	-d 目标ip
	-j 动作	

iptables -A INPUT -i eth0 -p all -s 源ip --sport 源端口 -d 目标ip --dport 目标端口 -j 动作

#常用模块状态
>iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT

#允许192.168.1.109登录ssh端口	
>iptables -A INPUT -i eth0 -p tcp -s 192.168.1.109 --dport 22 -j ACCEPT

#禁止这个IP访问我的80端口
>iptables -A INPUT -i eth0 -p all -s 192.168.1.108 --dport 80 -j ACCEPT
	
>iptables -D INPUT 1						#删除第一条规则

>iptables -A INPUT -m mac --mac-source 00:00:00:00:00  -j DROP #禁止mac地址访问我

>iptables -t filter -P INPUT DROP		#默认规则清除所有设置后的所有端口,注意哈,当初我学习的时候,第一个设置的,结果我自己上不去了(最后)

####一般服务器简单设置实例

iptables -F
#内部网络使用
iptables -A INPUT -i lo -j ACCEPT			
#状态连接				
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许80端口
iptables -A INPUT -p tcp --dport  80 -j ACCEPT 
#允许ssh
iptables -A INPUT -p tcp --dport  22 -s x.x.x.x -j ACCEPT
#允许mysql
iptables -A INPUT -p tcp --dport  3306 -j ACCEPT
#允许ftp
iptables -A INPUT -p tcp --dport  21 -j ACCEPT
#允许邮件服务器
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#关闭掉其他所有
iptables -P INPUT  DROP
#保存防火墙规则
service iptables save
#重启生效
service iptables restart

#####selinux

>sestatus	              #查看selinux的状态
>vim /etc/selinux/config
SELINUX=disabled	      #禁用selinux
>reboot 		          #重启服务器才能生效

###软件安装yum

####光盘安装

这个如果是服务器的话,估计很少用到,也不可能谁没事就挂载个光盘来吧!当然你没事你可以做测试玩~

#####首先,你要挂载关盘

mount /dev/cdrom /media

#####修改源

#进入源仓库配置文件
cd /etc/yum.repos.d/

#移除根仓库源 不然会首先找这个
mv CentOS-Base.repo CentOS-Base.repo.bak

#修改配置信息

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
#关闭签名
gpgcheck=0				
#开启原件源仓库
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#####安装软件

>rpm -ivh xxx.rpm  #软件的时候,可能依赖包没安装,最可能的是你安装的依赖会很多,所以我们用yum
>yum list		   #查看软件列表
>yum install mysql #安装mysql 如果你感觉输入y比较烦,就yum install mysql -y
>rpm -qa|grep mysql#查看安装mysql的一些包和依赖包
>yum remove  mysql #卸载,可能卸载掉一些依赖库,但是这些依赖库可能对你还很有用
>rpm -e xxxx       #单个卸载 --nodeps 是强制卸载

#####修改镜像源

这个我们经常使用,因为我的服务器一般都在国内,一般安装好的都是centos的原有镜像,速度来说肯定没有国内快,所以我就换成国内的镜像源,一般我用的是163的,因为换太简单了,当然你也可以自己手动写,没有什么技术含量

>cd /etc/yum.repos.d/										#进入
>mv CentOS-Base.repo	 CentOS-Base.repo.bak					#备份
>wget http://mirrors.163.com/.help/CentOS6-Base-163.repo		#下载
>mv CentOS6-Base-163.repo  CentOS-Base.repo					
>yum makecache												#清楚本地缓存


#按照这种格式就可以填写你自己的仓库源 其中$releasever是版本,我的环境是6,$basearch我的是i386
[base]
name=CentOS-$releasever - Base - 163.com							#镜像源名称
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/	#镜像源地址
gpgcheck=1														#gbk签名
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6		#gpk签名地址

#released updates 
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6		

>yum makecache
>yum list				

####查看服务器进程

>ps -ef |grep httpd	  #查看进程
>pstrese | grep httpd #从进程树查看

>netstat -tunpl | grep 80 
-t	tcp
-u  udp 

>uptime #显示登录信息和平均负载
>who 	#显示正在登录的用户

#####关闭进程

>pkill mysql
>kill -9 pid

###修改主机名称

临时修改

hostname widuu

修改配置文件修改

vim /etc/sysconfig/network	

###硬盘分区和挂载

这个很重要的了,如果你用云主机或者其它的服务器的时候肯定都待有分区和挂载,因为我发现大部分都不会给你挂载的,譬如阿里云、金山云、电信云等

1.分区表配置文件

>vim /etc/fstab			#分区配置文件表
/dev/cdrom  /media iso9660	defaults 0 0 

mount -a #测试光驱挂载是否成功

fdisk /dev/sdb
p #查看当前分区表
l #查看linux支持的文件系统
n #增加新分区
w #保存分区

>fdisk -l 								#查看文件分区,找到为分区的

fdisk -l

>fdisk /dev/sdb							#我们需要的分区/dev/sdb

fdiskm

>Command(m for help):m					#寻求帮助

>Command action							#增加一个分区,然后选择 e扩展分区 p主分区
   e   extended
   p   primary partition (1-4)
>p										#分为主分区
>Partition number (1-4): 1				#主分区number
>First cylinder (1-1044, default 1): 1  #设置柱面
>Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +3076M #设置硬盘大小

fdiskp

>p 										#查看系统分区
>t										#修改系统类型
>l										#显示系统类型

fdiskt

>w										#保存系统分区
>mkfs.ext4	/dev/sdb1					#格式化硬盘
>mkdir /data && mount /dev/sdb1	/data	#挂载硬盘
>df -h 									#查看硬盘挂载状况

fdisk

>vim /etc/fstab							#设置开机挂载硬盘,添加如下
/dev/sdb1  /data ext4   defaults  1 2	#这个和如下一一对应
fs_spec 		fs_file 	fs_type 	fs_options fs_dump   fs_pass	
挂载的文件系统	挂载点位置	文件系统类型  参数选项     是否dump   无需启动扫描0 跟分区启动扫描1 其它2即可
>mount -a 								#测试一挂载,千万要测试,我记得我做的最低级错误就是写错了,结果主机重启了,你懂得起不来了,我擦 损失大了
>unmout /dev/sdb1						#卸载硬盘分区

###用户权限管理

  1. ls -l
  2. chmod a+x xxx.sh
  3. sudo /usr/sbin/useradd widuu

###文件权限

文件权限三种 r-w-x 可读,可写,可执行 ,针对与文件和目录是不同的

文件的权限如下

rwx

上边我们切割一下

d --文件类型 目录

rwx|rwx|r-xm,每三个分成一组

  • 第一组 是文件所有者,这里是root有可读可写可执行(u)

  • 第二组 是root组的其它用户有可读可写可执行 (g)

  • 第三组 是other用户,就是既不属于文件所有者用户也不属于用户所有组,可读可执行 (o)

r w x --> 4 2 1 对应这4个值 ,你可以想成2的0次方,1次方,2次方

对于目录来说 x 可执行权限意思是可以切换进入到这个目录 也就是cd /filedir
对于目录来说 w 可写就是创建文件的权限或者创建文件夹的权限  mkdir test
对于目录来说 r 可读就是列出目录的权限 譬如 ls -l

对于文件来说 x 可执行,譬如.sh脚本有没有执行的权利
对于文件来说 w 可写,就是写入,譬如vi demo.txt必须有w权限
对于文件来说 r 可读权限,就是more cat less tail等能不能读取数据

chmod 给文件或者目录权限

>chmod 0777 test.txt              #test.txt的权限-rwxrwxrwx 
>chmod u+rwx,g+rwx,o+rwx test.txt #同上的权限 +给权限 -是删除权限
>chmod a+x                        #所有用户追加x权限
>chmod -R 777 dir                 #递归添加dir目录所有权限

chown 分配用户和组

>chown www:www /var/www/html     #给html目录 www用户和www用户组权限

id 查看用户信息

>id xiaowei 
uid=501(xiaowei) gid=501(xiaowei) groups=501(xiaowei)

>gpasswd -a xiaowei root #将xiaowei用户添加到root
>gpasswd -d xiaowei root #从root组中删除

>usermod -L xiaowei      #锁定xiaowei用户 
>usermod -U xiaowei      #解锁xiaowei用户

sudo 权限设置

>visudo 
>xiaowei localhost=/usr/sbin/useradd #添加到文件中,给xiaowei有useradd权限
>sudo useradd xiaowei1               #可以添加用户了

添加删除用户

>groupadd   xiaowei                 #添加用户组
>useradd -g xiaowei xiaowei         #添加用户并且添加到用户组
>userdel -r xiaowei                 #删除用户

###ACL权限分配

一个公司里不可能让所有人都有root权限,所以在一些文件和文件夹处理,以及权限处理的时候就很棘手,这个时候我们就需要ACL给用户进行权限分配

1.加权限

>setfacl -m u:username:rwx filedir #设置ACL

2.查看权限

>getfacl filedir                   #获取ACL

# file: filedir
# owner: root
# group: root
user::rwx
user:username:rwx
group::r-x
mask::rwx
other::r-x

3.删除权限

>setfacl -b u:username filedir     #删除u这个用户的acl权限 
>setfacl -b filedir                #删除filedir的ACL所有权限

4.分配权限

nginx有时候就是因为权限的问题造成了nginx对cpu的负载过高,我们可以直接使用ACL对其分配权限

#nginx执行的用户是www,我们要www有nginx文件夹的所有权限
#nginx的安装目录是/usr/local/nginx
>setfacl -m u:www:rwx -R /usr/local/nginx #-R 文件递归

###任务计划

我们有时候定时备份,或者说定时执行一些脚本这是我们必须会的

>crontab -e                   #编写定时计划
2  *  *  *  *  /sbin/init 0   #这里是每2分钟关机一次,当然你已经关机了
#分 时 日 月 周  脚本
>crontab -r                   #删除定时任务
>crontab -l                   #列出定时任务

About

linux基础教程-linux服务器基础教程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy