Linux系统启动过程:

  1. 打开电源开关开机
  2. BIOS自检
  3. MBR引导
  4. grub内核菜单选择
  5. 加载内核kernel
  6. 运行init进程,系统初始化
  7. 然后读取/etc/inittab 配置文件,当前系统所在的运行级别进行寻找所需的文件
  8. 读取/etc/rc.d/sysinit 启动脚本 设置hostname ip 等检查相关系统配置是否完整
  9. 读取/etc/rc.local 启动开机程序
  10. 最后进入到mingetty 登录界面窗口 启动完成

PATH 环境变量: 有什么作用?

PS1  LANG PATH

$  系统大部分地方都是可以使用,含义相同。

[root@luffy001 proc]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

cd - ==== 进入到上一次的目录  cd $OLDPWD

cd . ===== 进入到当前目录

cd .. ======进入到当前目录的上一级目录

cd ~ =======进入到当前用户的家目录

cd  ====== 回老家,

一般Linux系统安装完成之后需要做的优化有哪些?

基础优化操作:

优化条目:

修改IP地址,网关,主机名,DNS等网络配置;

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改主机名: vim /etc/sysconfig/network  (hostname=" ")

修改DNS: vim /etc/resolv.conf

重启网卡: service network restart  或 /etc/init.d/network restart

关闭selinux,清空iptables.

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #修改配置文件则永久生效,但是必须要重启系统。  这样是修改selinux配置文件使其永久生效.

grep SELINUX=disabled /etc/selinux/config 查看更改后的结果.

临时修改: setenforce 0

getenforce ###查看selinux当前状态.

清空防火墙规则:

iptables -F 清空

iptables -L 查看防火墙规则.

/etc/init.d/iptables save #保存防火墙配置信息

添加普通用户并进行sudo授权管理

useradd user01

echo "123456"|passwd --stdin  user01 && history -c

visudo

#在root  ALL=(ALL) 此行下,添加如下内容

user01  ALL=(ALL)   ALL 

给user01 添加sudo权限

更新yum源及必要软件安装.

添加国内较快的阿里云yum源,或者网易163的yum源站点

方法1:自己配置好yum源,然后上传到Linux将

cd /etc/yum.repos.d/ 这个目录下的 CentOS-Base.repo 文件进行保存后替换.

cp CentOS-Base.repo  CentOS-Base.repo.bak

然后wget http://mirrors.163.com/.help/CentOS6-Base-163.repo  && mv  CentOS6-Base-163.repo CentOS6-Base.repo

#yum clean all  #清空yum缓存

#yum makecache #建立yum缓存

然后使用如下命令将系统更新到最新

[root@c64 yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* #导入签名KEY到RPM [root@c64 yum.repos.d]# yum upgrade -y #更新系统内核到最新

接下来安装必须的软件:

yum -y install lrzsz ntpdate sysstat 

lrzsz  上传下载的软件

ntpdate  是用来与远程时间服务器进行时间更新的软件

sysstat  是用来检测系统性能及效率的工具

定时更新服务器时间(ntp服务器的设置)

定时自动更新服务器时间. 将每5分钟定时向ntp_server进行时间同步.

echo '*/5  *  *  *  *  /usr/sbin/ntpdate  ntp1.aliyun.com  >/dev/null  2>&1'  >>/var/spool/cron/root

精简开机自启动服务

刚装完操作系统可以只保留crond,network,syslog,sshd这四个服务

方式一: 通过setup命令进行勾选.

方法二:通过命令进行设置:

for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done

for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done

chkconfig --list|grep 3:on  进行检查.

定时自动清理/var/spool/clientmqueue/目录垃圾文件, 防止inode节点爆满.(添加进定时任务中)

1.先写清理日志的脚本.

mkdir -p /server/scripts

vim /server/scirpts/clean.sh

#!/bin/sh

find /var/sppol/   -type f -mtime +30|xargs rm -f

2.然后将脚本添加进crontab定时任务中.

#echo '*  *  *  *  * /bin/sh /server/scripts/clean.sh >/dev/null 2>&1'  >>/var/spool/cron/root

变更默认的ssh远程连接端口,禁止root用户远程连接登录.

(修改远程连接的端口,是在服务器端修改ssh的配置文件, vim /etc/ssh/sshd_config)

修改端口配置文件 :

vim /etc/ssh/sshd_config

将port 选项注释的22 取消,然后设置为其它端口 ,建议从1024之后的端口使用

Port 63350
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

修改配置禁用root账户远程登录:

PermitRootLogin yes //允许root远程连接

PermitRootLogin no //禁止root远程连接

然后重启服务即可, service sshd restart/reload  

查看端口信息: netstat -ntl

lsof -i tcp:65530

锁定关键文件系统(chattr 设置文件系统锁 和lsattr进行查看)

[root@c64 ~]# chattr +i /etc/passwd

[root@c64 ~]# chattr +i /etc/inittab

[root@c64 ~]# chattr +i /etc/group

[root@c64 ~]# chattr +i /etc/shadow

[root@c64 ~]# chattr +i /etc/gshadow

使用chattr命令后,为了安全我们需要将其改名

[root@c64 ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名称

调整文件描述符大小

文件描述符,形式上是一个非负整数,它是一个索引值,,Unix,Linux这样的操作系统.

standard input  0

standard output  1

standard error  2

查看文件描述符大小: ulimit -n

echo ' *  - nofile  65535' >> /etc/security/limits.conf

配置之后,重新登录即可生效.

调整字符集,使其支持中文

echo $LANG 查看目前的字符集

sed -i 's#en_US.UTF-8#zh_CN.UTF-8#g'    /etc/sysconfig/i18n  sed进行替换当前字符集

source /etc/sysconfig/i18n source使其生效.

去除系统及内核版本登录前的屏幕显示

[root@luffy001 yum.repos.d]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@luffy001 yum.repos.d]# >/etc/redhat-release
[root@luffy001 yum.repos.d]# cat /etc/redhat-release
[root@luffy001 yum.repos.d]# cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m

[root@luffy001 yum.repos.d]# >/etc/issue
[root@luffy001 yum.repos.d]# cat /etc/issue
[root@luffy001 yum.repos.d]#

这样就无法知道当前系统是Linux什么版本的了

内核参数优化

说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。

vim /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time =600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #一下参数是对iptables防火墙的优化,防火墙不开会有提示,可以忽略不理。 net.ipv4.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

[root@localhost ~]# sysctl -p #使配置文件生效

提示:由于CentOS6.X系统中的模块名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf优化时,需要把net.ipv4.netfilter.ip_conntrack_max 这种老的参数,改成net.netfilter.nf_conntrack_max这样才可以。

在6.4上是

net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

另外,此优化过程可能会报错.
modprobe ip_conntrack echo "modprobe ip_conntrack" >> /etc/rc.local
6.4报错:
error: "net.nf_conntrack_max" is an unknown key
error: "net.netfilter.nf_conntrack_max" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_established" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_time_wait" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_close_wait" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait" is an unknown key
这个错误可能是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,
解决办法有二,一是开启防火墙,二是自动处理开载入的模块ip_conntrack
modprobe nf_conntrack
echo "modeprobe nf_conntrack" >> /etc/rc.local

3、6.4版本上

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
这个错误是由于自动处理可载入的模块bridge没有自动载入,解决办法是自动处理开载入的模块ip_conntrack
modprobe bridge
echo "modprobe bridge" >> /etc/rc.local
综上,大概有13个优化点针对Linux的系统基础优化环节.
												

Day003_linux基础_系统启动过程及系统安装后优化的更多相关文章

  1. CentOS系统安装后的基础优化

    在运维工作中,我们发现Linux系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行. 下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作. 注意:本次优化都是基 ...

  2. CentOS6.X 系统安装后的基础优化

    特别说明:克隆之后的网卡修改 1 编辑eth0的配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0, 删除HWADDR地址那一行及UUID的行如下: H ...

  3. Android系统启动过程-uBoot+Kernel+Android

    摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...

  4. Linux系统启动过程介绍

    Linux系统启动过程介绍 学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程. 1.BIOS自检:当开机的时候 ...

  5. linux系统启动过程的列表

    linux系统启动过程的列表 载入BIOS的硬件信息并进行自检.然后根据设置取得第一个可启动的设备: 读取并运行第一个启动设备内MBR(master boot record,主引导分区)的boot l ...

  6. 一起学Linux02之Linux系统启动过程

    这个Linux系统启动过程啊,说实话,我认为,刚学习的时候看几遍,了解一下就好.现在的主要任务是用.熟练了之后再来深究这个不急. 下面我就简单地说说吧. Linux系统的启动主要分为下列步骤: 1 内 ...

  7. Android 系统启动过程简单记录

    本文记录Android系统启动过程,包含从linux kernerl到luancher启动完成的过程: 1.linux内核完成系统设置后,会在系统文件中寻找‘init’文件,然后启动root进程或者说 ...

  8. Android系统启动过程[典☆☆☆]

    Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动 ...

  9. Linux 系统启动过程,Linux 系统目录结构

    一.Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立 ...

随机推荐

  1. spark学习(10)-RDD的介绍和常用算子

    RDD(弹性分布式数据集,里面并不存储真正要计算的数据,你对RDD的操作,他会在Driver端转换成Task,下发到Executor计算分散在多台集群上的数据) RDD是一个代理,你对代理进行操作,他 ...

  2. UVA11388 GCD LCM

    (链接点这儿) 题目: The GCD of two positive integers is the largest integer that divides both the integers w ...

  3. 完整原型链详细图解之JS构造函数、原型 原型链、实例化对象

    一.首先说一下什么是构造函数: 构造函数:用来在创建对象时初始化对象.特点:构造函数名一般为大写字母开头:与new运算符一起使用来实例化对象. 举例: function Person(){} //Pe ...

  4. 二、java实现多线程的方式?

    一.同步?异步? 下面两幅图解释了同步异步. 二.实现多线程的方式 1.继承Thread package threaddemo; class CreateThreadDemo extends Thre ...

  5. HTML加载FLASH(*.swf文件)详解

    引言 在web项目中经常会遇到在线浏览word文档,通常解决方法将word转换成pdf,然后在线浏览,但是在实际实现过程中,由于阅读器的原因,用户可以直接下载该pdf,这显然不是我们想要的,通过网络搜 ...

  6. JavaWeb零基础入门-01 基础概念说明

    一.序言 从学校出来到实习,发现学校学的东西太过基础,难于直接运用于工作中.而且工作中,现在都以web开发为主,学校开了web开发相关课程.自己学的不够深入,所以本人自学JavaWeb开发,介于学习巩 ...

  7. 【KakaJSON手册】04_JSON转Model_04_值过滤

    在KakaJSON手册的第2篇文章中提过:由于JSON格式能表达的数据类型是比较有限的,所以服务器返回的JSON数据有时无法自动转换成客户端想要的数据类型 比如客户端想要的是Date类型,服务器返回的 ...

  8. JMeter使用JSON Extractor插件实现将一个接口的JSON返回值作为下一个接口的入参

    ##补充## 接口响应数据,一般为JSON,HTML格式的数据. 对于HTML的响应结果提取,可以使用正则表达式,也可以通过XPath来提取:对于JSON格式的数据,可以用正则表达式,JSON Ext ...

  9. Java网络编程 -- BIO 阻塞式网络编程

    阻塞IO的含义 阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不 ...

  10. node.js 初学 自我笔记整理 day01

     node.js   概念问题: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.   npm是一个node的包管理工具  ,也是一个网站  ,还是一条命令.N ...