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. 消息中间件和JMS介绍(一)

    在一个公司创立初期,他可能只有几个应用,系统之间的关联也不是那么大,A系统调用B系统就直接调用B提供的API接口:后来这个公司做大了,他一步步发展有了几十个系统,这时候A系统要调用B系统的接口,但是B ...

  2. jmh源码解析-整体架构

    我理解的jmh运行架构图 生成字节码,字节码负责维护测试的状态和调用被测试的方法 默认在fork的进程中进行测试,可以配置多个fork进程,以减少误差 通过线程池,提交每个迭代的测试任务,任务执行后, ...

  3. android ——网络编程

    一.WebView 这个View就是一个浏览器,用于展示网页的. 布局文件: <LinearLayout xmlns:android="http://schemas.android.c ...

  4. 【0728 | 预习】第三篇 Python基础

    第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...

  5. (六)c#Winform自定义控件-单选框

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  6. 『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)

    深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内容:(更新 ...

  7. 实时计算大数据处理的基石-Google Dataflow

    ​ 此文选自Google大神Tyler Akidau的另一篇文章:Streaming 102: The world beyond batch ​ 欢迎回来!如果您错过了我以前的帖子,Streaming ...

  8. Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1'

    Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1' 进入 projects and lis ...

  9. 深入Java源码剖析之字符串常量

    字符串在Java生产开发中的使用频率是非常高的,可见,字符串对于我们而言非常关键.那么从C语言过来的同学会发现,在C中是没有String类型的,那么C语言要想实现字符串就必须使用char数组,通过一个 ...

  10. Python3 完美解决unittest框架下不生成测试报告

    前提: 1.运行测试用例一切正常,只是没有测试报告显示 2.使用命令行pyhon 脚本名字.py 却可以生成测试报告 3.pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的, ...