Linux系统启动过程:
- 打开电源开关开机
- BIOS自检
- MBR引导
- grub内核菜单选择
- 加载内核kernel
- 运行init进程,系统初始化
- 然后读取/etc/inittab 配置文件,当前系统所在的运行级别进行寻找所需的文件
- 读取/etc/rc.d/sysinit 启动脚本 设置hostname ip 等检查相关系统配置是否完整
- 读取/etc/rc.local 启动开机程序
- 最后进入到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
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的系统基础优化环节.