个人经验总结仅供参考
- 4、 开机自启动,给/etc/rc.local添加执行权限
- 6、关闭selinux
- 10、加大打开文件数的限制(open files)
- 无法全屏显示增加增强实现功能
- 时间同步:
- 11、`*`**根据各个公司网络环境配置DNS**
- 15、ssh连接慢
- 16、更改主机名
- 19、系统基础查询
- 20、解决Linux服务器执行出现`-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory`
- 查看cpu个数
- 21、如果远程ssh可以连接服务器,但是scp不可以,需要每次删除/home//.ssh/known_hosts中的相应的ip才可以
- 22、绑定本机ip
1、新建centos7系统,安装完成之后进行下面的操作(基于此基础之上)
2、下载必要软件包
再安装操作系统的时候使用的最小化安装,有很多包没有安装,使用时发现好多命令没有如{vim、wget、tree…等},下面就安装命令,可以根据需求自行调整。
yum -y install wget net-tools screen lsof tcpdump nc mtr openssl-devel vim bash-completion lrzsz nmap telnet tree ntpdate bash-completion chrony
3、使用aliyun的repo源
操作系统自带的是国外的源,改成国内的源安装包会快很多 例:aliyun或者清华的源都可以,这里使用aliyun的repo源。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum makecache
4、 开机自启动,给/etc/rc.local添加执行权限
对于不希望使用 systemd 服务文件的简单任务,rc.local 提供了一个较为直接的方法来执行启动时的任务。
chmod +x /etc/rc.d/rc.local #添加执行权限
ls -l /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 473 Oct 20 11:07 /etc/rc.d/rc.local
注:这样添加在rc.local里的开机自启动配置就可以执行了。
sudo systemctl status rc-local
sudo systemctl enable rc-local
示例:
#!/bin/bash
/usr/local/bin/myscript.sh &
exit 0
- 请注意加上 & 号,以便命令在后台运行,不阻塞启动过程。
6、关闭selinux
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,说白了就是安全机制,当然如果会配置的话建议配置更好,这里就介绍一下如何关闭吧,哈哈哈。
sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #修改配置文件需要重启服务器配置才会生效,如何立即生效那?
setenforce 0 #关闭SELinux立即生效,重启服务器后配置失效。
查看当前的 SELinux 状态
getenforce
7、关闭防火墙
防火墙,不解释,内网服务建议关掉,对外开放的服务器需要配置规则,这里先关掉,关于防火墙配置规则等待后续更新。
systemctl stop firewalld #临时关闭
systemctl disable firewalld #永久关闭
9、设置字符集
设置当前服务器字符集,国际通用utf-8,当然根据自己的业务自己调整,
localectl status #查看当前字符集
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
localectl set-locale LANG=zh_CN.UTF-8 #修改字符集为zh_CN.UTF-8,命令行和配置文件都生效
cat /etc/locale.conf #查看配置文件
10、加大打开文件数的限制(open files)
CentOS 7系统默认最大打开文件限制为1024,每建立一个TCP连接既浪费一个限制(这里不细讲,后续会更新详细说明),为了提升服务器性能,所以我们要增加打开文件的最大限制。
>> 追加到文件末尾
ulimit -n #默认大小
1024
echo "* soft nofile 65536" >> /etc/security/limits.conf #xi修改最大限制为65535
echo "* hard nofile 65536" >> /etc/security/limits.conf
reboot #重启后生效
即时生效 直接加大小
产看可用命令:
[root@LXCL-SFTP ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31152
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 102400
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31152
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ ulimit -a
-t:cpu时间 (秒) 无限制
-f:文件大小(块) 不限
-d:数据段大小(千字节) 无限制
-s:堆栈大小(千字节) 8192
-c:核心文件大小(块) 0
-m:驻留集大小(千字节)无限
-u:进程 192276
-n:文件描述符 21000
-l:锁定在内存中的大小( kb )无限制
-v:地址空间( kb ) 不受限制
-x:文件锁定无限
-i:未决信号 192276
-q:POSIX消息队列中的字节 819200
-e:最大 允许30
-r:最大rt优先级 65
-N 15:无限
使用ulimit -n 65536 直接生效
# ulimit -n 102400 && ulimit -n && vim /etc/security/limits.conf
添加如下两列
* soft nofile 102400
* hard nofile 102400
#<domain> <type> <item> <value>
#
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
# End of file
-----------分割线,上面是配置文件的模板,下面是自己添加的------------------------
* soft nofile 655350 #表示任何一个用户可以打开的最大的文件描述符数量
* hard nofile 655350 #
* soft nproc 655350 #表示任何一个用户可以打开的最大的进程数,是对会话或进程实际实施的限制,但任何进程都可以将其增加到“hard”ulimit最大值
* hard nproc 655350 #是指用户在任何时候可以激活的最大进程数这是天花板
@student hard nofile 65535 #student组中的任何人最多能打开文件描述符数量是65535,并且会在打开65000个时发出警告
@student soft nofile 65000
@student hard nproc 50 #student组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告
@student soft nproc 30
注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后将无法正常登录。
/etc/security/limits.d/目录
该目录下默认有 *-nproc.conf 文件配置会覆盖/etc/security/limits.conf的配置
1、/etc/security/limits.d/ 下文件的相同配置可以覆盖 /etc/security/limits.conf
2、soft和hard需要都进行设置,才能生效。
3、nofile不能设置 unlimited
4、nofile可以设置的最大值为 1048576(1024*1024),设置的值大于该数,就会进行登录不了。
5、soft 设置的值 一定要小于或等于 hard 的值。
# 查看ulimit使用量
lsof -Ki|wc -l
# 查看某个进程的使用量
lsof -p pid | wc -l
系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制
cat /proc/sys/fs/file-max
lsof -u ^root #列出除root用户以外打开的文件
lsof -i tcp #查看所有的TCP/UDP连接
# 系统最大打开文件描述符数:
$ cat /proc/sys/fs/file-max
6553600
# 查看当前系统使用的打开文件描述符数
$ cat /proc/sys/fs/file-nr
5664 0 186405
其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。
注:
limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。
a. 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
b. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
c. nofile的soft limit不能超过其hard limit
d. nofile的hard limit不能超过/proc/sys/fs/nr_open。
无法全屏显示增加增强实现功能
yum install -y gcc kernel kernel-devel
然后重启即可:reboot。
时间同步:
方法一:
cp /usr/share/zoneinfo/PRC /etc/localtime
方法二(推荐):
timedatectl
设置Asia/Shanghai时区
timedatectl set-timezone Asia/Shanghai
设置日期和时间:
timedatectl set-time '16:10:40 2015-11-20'
要开始自动时间同步到远程NTP服务器,在终端键入以下命令
timedatectl set-ntp true
如果报错Failed to set ntp: NTP not supported.是因为没有安装ntpdate
可直接采用 yum installl ntp 即可
参考:
要查看所有可用的时区,运行以下命令:
# timedatectl list-timezones
要根据地理位置找到本地的时区,运行以下命令:
# timedatectl list-timezones | egrep -o ‘’Asia/B.*”
# timedatectl list-timezones | egrep -o “Europe/L.*”
# timedatectl list-timezones | egrep -o “America/N.*”
推荐使用和设置协调世界时,即UTC。
# timedatectl set-timezone UTC
设置Linux中的时间。只设置时间的话,我们可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式。
# timedatectl set-time 15:58:30
在Linux中设置日期。只设置日期的话,我们可以使用set-time开关以及YY:MM:DD(年,月,日)的日期格式。
# timedatectl set-time 20151120
设置日期和时间:
# timedatectl set-time '16:10:40 2015-11-20'
各大洲时区
太平洋地区
时区 中文名
Pacific/Majuro 马朱罗
Pacific/Midway 中途岛
Pacific/Honolulu 檀香山
Pacific/Guam 关岛
Pacific/Auckland 奥克兰
Pacific/Fiji 斐济
Pacific/Tongatapu 东加塔布
美洲
时区 中文名
America/Anchorage 安克雷奇
America/Los_Angeles 美国太平洋时间 (洛杉矶)
America/Tijuana 美国太平洋时间 (提华纳)
America/Phoenix 美国山区时间 (凤凰城)
America/Chihuahua 奇瓦瓦
America/Denver 美国山区时间 (丹佛)
America/Costa_Rica 美国中部时间 (哥斯达黎加)
America/Chicago 美国中部时间 (芝加哥)
America/Mexico_City 美国中部时间 (墨西哥城)
America/Regina 美国中部时间 (里贾纳)
America/Bogota 哥伦比亚时间 (波哥大)
America/New_York 美国东部时间 (纽约)
America/Caracas 委内瑞拉时间 (加拉加斯)
America/Barbados 大西洋时间 (巴巴多斯)
America/Manaus 亚马逊标准时间 (马瑙斯)
America/Santiago 圣地亚哥
America/St_Johns 纽芬兰时间 (圣约翰)
America/Sao_Paulo 圣保罗
America/Argentina/Buenos_Aires 布宜诺斯艾利斯
America/Godthab 戈特霍布
America/Montevideo 乌拉圭时间 (蒙得维的亚)
大西洋
时区 中文名
Atlantic/South_Georgia 南乔治亚
Atlantic/Azores 亚述尔群岛
Atlantic/Cape_Verde 佛得角
Africa/Casablanca 卡萨布兰卡
欧洲
时区 中文名
Europe/London 格林尼治标准时间 (伦敦)
Europe/Amsterdam 中欧标准时间 (阿姆斯特丹)
Europe/Belgrade 中欧标准时间 (贝尔格莱德)
Europe/Brussels 中欧标准时间 (布鲁塞尔)
Europe/Sarajevo 中欧标准时间 (萨拉热窝)
Europe/Athens 东欧标准时间 (雅典)
Europe/Helsinki 东欧标准时间 (赫尔辛基)
Europe/Minsk 明斯克
Europe/Moscow 莫斯科
非洲
时区 中文名
Africa/Windhoek 温得和克
Africa/Brazzaville 西部非洲标准时间 (布拉扎维)
Africa/Cairo 东欧标准时间 (开罗)
Africa/Harare 中部非洲标准时间 (哈拉雷)
Africa/Nairobi 东部非洲标准时间 (内罗毕)
亚洲
时区 中文名
Asia/Amman 东欧标准时间 (安曼)
Asia/Beirut 东欧标准时间 (贝鲁特)
Asia/Jerusalem 以色列时间 (耶路撒冷)
Asia/Baghdad 巴格达
Asia/Kuwait 科威特
Asia/Tehran 伊朗标准时间 (德黑兰)
Asia/Baku 巴库
Asia/Tbilisi 第比利斯
Asia/Yerevan 埃里温
Asia/Dubai 迪拜
Asia/Kabul 阿富汗时间 (喀布尔)
Asia/Karachi 卡拉奇
Asia/Oral 乌拉尔
Asia/Yekaterinburg 叶卡捷林堡
Asia/Calcutta 加尔各答
Asia/Colombo 科伦坡
Asia/Katmandu 尼泊尔时间 (加德满都)
Asia/Almaty 阿拉木图
Asia/Rangoon 缅甸时间 (仰光)
Asia/Krasnoyarsk 克拉斯诺亚尔斯克
Asia/Bangkok 曼谷
Asia/Shanghai 中国标准时间 (北京)
Asia/Hong_Kong 香港时间 (香港)
Asia/Irkutsk 伊尔库茨克时间 (伊尔库茨克)
Asia/Kuala_Lumpur 吉隆坡
Australia/Perth 佩思
Asia/Taipei 台北时间 (台北)
Asia/Seoul 首尔
Asia/Tokyo 日本时间 (东京)
Asia/Yakutsk 雅库茨克时间 (雅库茨克)
Asia/Vladivostok 海参崴时间 (符拉迪沃斯托克)
Asia/Magadan 马加丹时间 (马加丹)
大洋洲
时区 中文名
Australia/Adelaide 阿德莱德
Australia/Darwin 达尔文
Australia/Brisbane 布里斯班
Australia/Hobart 霍巴特
Australia/Sydney 悉尼
11、*根据各个公司网络环境配置DNS
配置DNS8.8.8.8
vim /etc/resolv.conf
添加下面这行代码,根据需求修改
nameserver 8.8.8.8
注:有关DNS开机启动重置方案(避免每次重启linux都需要配置需要的DNS):
解决方案:在/etc/sysconfig/network-scripts/ifcfg-eth0 文件中添加DNS server信息,添加配置如下:
google域名服务器
DNS1=8.8.8.8
12、查看系统IP
方法一、查看一下是否有 ifconfig解决ifconfig不可用(系统最小化安装常出现的问题)
没有 ifconfig 的话安装 net-tools package
sudo yum install net-tools
方法二、使用 ip addr 即查看网卡分配情况。
ip add | more
13、安装vim 命令:yum install vim -y
14报错
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
解决:打开/etc/yum.repos.d/epel.repo,将
[epel]
name=Extra Packages for Enterprise Linux 6 - KaTeX parse error: Expected 'EOF', got '#' at position 10: basearch #̲baseurl=http://…basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
修改为
[epel]
name=Extra Packages for Enterprise Linux 6 -
b
a
s
e
a
r
c
h
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
d
o
w
n
l
o
a
d
.
f
e
d
o
r
a
p
r
o
j
e
c
t
.
o
r
g
/
p
u
b
/
e
p
e
l
/
6
/
basearch baseurl=http://download.fedoraproject.org/pub/epel/6/
basearchbaseurl=http://download.fedoraproject.org/pub/epel/6/basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
再清理源,重新安装
yum clean all
yum install -y 需要的包
15、ssh连接慢
[root@test1 ~]# sed -i 's/\#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config && systemctl restart sshd
[root@test4 rabbitmq]# cat /etc/ssh/sshd_config
……
#UseDNS yes
UseDNS no
……
systemctl restart sshd
如果ssh连接还慢的话再修改sshd服务器端配置
sed -i 's/\GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config && systemctl restart sshd
15.1、ssh 登录慢 - org.freedesktop.login1 的激活超时
使用 ssh -vvv 选项进行连接,延迟发生在debug1: Entering interactive session.
Jul 21 14:10:18 click sshd[8165]: pam_systemd(sshd:session): Failed to create session: Activation of org.freedesktop.login1 timed out
使用如下命令修复
当 dbus 重新启动时会发生这种情况,但 systemd-logind 没有重新启动。只需执行以下操作:
systemctl restart systemd-logind.service
这实际上是一个 dbus 错误:unix fd in-flight count broken ,在 dbus 版本 1.11.10中已解决
dbus-daemon --version可以查看本机的版本
16、更改主机名
- 1、方法一使用hostnamectl命令
hostnamectl set-hostname selfhostname.test.com
- 2、方法二:修改配置文件 /etc/hostname 保存退出Esc :wq
vi /etc/hostname
selfhostname.test.com #selfhostname是自己所起的主机名
保存退出
reboot
重启机之后就可看到所改的主机名
检查运行使用的端口号:
netstat -plntu //检查运行使用的端口号
17、关闭swap:
swapoff -a && swapon -a
sysctl -p (执行这个使其生效,不用重启)
18、禁用NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
19、系统基础查询
# 查看磁盘信息
lsblk
# 主板型号
dmidecode |grep -A16 "System Information$"
# 机器型号
dmidecode | grep "Product Name"
# 操作系统内核信息:
uname -a
# 内核版本
cat /proc/version
# 内存总数
cat /proc/meminfo | grep MemTotal
# cpu信息(Processor )
lscpu
其中socket代表物理cpu个数, Core(s) per socket就是每个cpu多少核,Thread(s) per core就是每个核几个超线程,CPU MHz内核频率
20、解决Linux服务器执行出现-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory
①、可能是您的开头脚本命令错误符号问题;一般不常见
②、高概率是由于您所使用的文件格式不兼容,例如你在windows上编写的脚本,格式是dos的,而在linux操作系统上应该是Unix的,使用vim编辑器打开脚本文件,末行模式执行set ff命令即可
原本在doc操作系统上的文件格式如下图

而在windows编写后上传的文件格式为dos
因此解决方法就是末行模式下执行下面的命令回车即可
:set ff=unix
查看cpu个数
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
21、如果远程ssh可以连接服务器,但是scp不可以,需要每次删除/home//.ssh/known_hosts中的相应的ip才可以
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:YzN5Ab7QQNahABYmHoM6IS8i1FOPsngduCHKZo+DA1c.
Please contact your system administrator.
Add correct host key in /home/leo/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/leo/.ssh/known_hosts:3
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
This computer system is for authorized use only
leouser@10.252.9.6: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
解决
# 使用StrictHostKeyChecking选项,在SCP命令中禁用严格的主机密钥检查
scp -o StrictHostKeyChecking=no
# or从根本解决,修改ssh配置
#/etc/ssh/ssh_config:系统级别的 SSH 配置文件,对系统中所有用户生效。
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# or 编辑~/.ssh/config文件,添加以下内容:
#~/.ssh/config:用户级别的 SSH 配置文件,仅对当前用户生效。
# 在SSH连接时,~/.ssh/config 的配置优先级高于 /etc/ssh/ssh_config。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# 重启
sudo systemctl restart sshd
22、绑定本机ip
# scp指定本机绑定ip
scp -o "BindAddress=10.251.99.122" -P 5023 ecauser@10.252.179.6:/ericsson/batch/data/export/3gpp_export/PI_ALL_$current_date* /var/opt/ericsson/eca/var/mailbox/cmbulk_4G5G/out/
#也可以在~/.ssh/config添加如下绑定
Host <remote ip>
BindAddress <local ip1>
Host <remote ip>
BindAddress <local ip2>```
**screen**
```ruby
# 创建screen终端
screen -R balabala
# 离开 screen 终端
在 screen 终端 下 按下 Ctrl+a d键
screen -ls //显示已创建的screen终端
screen -r 2276 //连接 screen_id 为 2276 的 screen终端
参数说明:
-A 将所有的视窗都调整为目前终端机的大小。
-d<作业名称> 将指定的screen作业离线。
-h<行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s<shell> 指定建立新视窗时,所要执行的shell。
-S<作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
log
tail /var/log/messages //系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
tail -f /var/log/secure //与安全相关的日志信息
tail /var/log/maillog //与邮件相关的日志信息
tail /var/log/cron //与定时任务相关的日志信息
tail /var/log/dmesg //和系统启动相关
tail /var/log/audit/audit.log //系统审计日志
tail /var/log/yum.log //yum
tail /var/log/xferlog //和访问FTP服务器相关
tail /var/log/wtmp //当前登录的用户(命令:w)
tail /var/log/btmp //最近登录的用户(命令last)
tail /var/log/lastlog //所有用户的登录情况(命令lastlog )
tail /var/log/boot.log //守护进程启动和停止相关的日志消息
tail /var/log/spooler //与UUCP和news设备相关的日志信息
本文档提供CentOS7系统的全面配置教程,包括软件安装、网络配置、性能优化及安全设置等内容。
737






