centos eof redhat centos

大家好,关于centos eof很多朋友都还不太明白,今天小编就来为大家分享关于redhat centos的知识,希望对各位有所帮助!

CentOS系统常规初始化操作详解

环境准备:

1)设置本地国际化语言为en_US.UTF-8

[root@c58~]#sed-i's/^\(LANG=\).*$/\1en_US.UTF-8/'/etc/sysconfig/i18n

[root@c58~]#cat/etc/sysconfig/i18n

LANG=en_US.UTF-8

[root@c58~]#LANG=en_US.UTF-8

2)更新系统软件包

备份默认yum源:

find/etc/yum.repos.d-name'*.repo'-execmv{}{}.bak\;

添加163yum源:

redhat5或centos5:

wget

redhat6或centos6

wget

添加epel yum源:

redhat5.x 32bit:

rpm-ivh

redhat5.x 64bit:

rpm-ivh

redhat6.x 32bit:

rpm-ivh

redhat6.x 64bit:

rpm-ivh

更新证书:

yum-yupgradeca-certificates--disablerepo=epel

更新系统所有软件包:

yumcleanallyummakecacheyum-yupgrade

下文以redhat5/centos5为例

一、服务最小化原则

关闭所有开机自启动服务,仅开启sshd、crond、network、iptables、syslog(redhat5)、rsyslog(redhat6),然后在此基础上按需添加需要开机启动的服务。

1)关闭所有开机自启动服务

[root@c58~]#foriin`chkconfig--list|awk'{if($1~/^$/){exit0;}else{print$1}}'`;dochkconfig$ioff;done

2)开启基础服务

[root@c58~]#foriinsshdnetworksyslogcrondiptables;dochkconfig$ion;done

3)查看开启的服务

[root@c58~]#chkconfig--list|grep'3:on'

crond0:off1:off2:on3:on4:on5:on6:off

iptables0:off1:off2:on3:on4:on5:on6:off

network0:off1:off2:on3:on4:on5:on6:off

sshd0:off1:off2:on3:on4:on5:on6:off

syslog0:off1:off2:on3:on4:on5:on6:off

二、用户登录限制

1)禁止使用root用户使用远程ssh

[root@c58~]#cd/etc/ssh

[root@c58ssh]#cpsshd_configsshd_config~

[root@c58ssh]#sed-i's/#\(PermitRootLogin\)yes/\1no/'sshd_config

[root@c58ssh]#grep'PermitRoot'/etc/ssh/sshd_config

PermitRootLoginno

2)禁用登录提示信息

[root@c58ssh]#/etc/motd

3)修改ssh的默认监听端口(tcp:22)

#这里修改为tcp的11983端口

[root@c58ssh]#sed-i's/#\(Port\)22/\11983/'sshd_config

[root@c58ssh]#grep'Port'sshd_config

Port11983

4)只允许指定的ip可以ssh(可选)

方法1(使用tcpwrapper):

#只允许192.168.124.0网段的ip使用ssh

echosshd:192.168.124.0/255.255.255.0/etc/hosts.allow

echosshd:ALL/etc/hosts.deny

方法2(使用iptables):

#注意,远程操作时需留心,以免把自己也拒绝而导致无法远程连接。如只允许192.168.1.0网段的所有ip进行ssh,其他所有ip都拒绝#先允许自己的ip,以防被后面的操作误伤

iptables-IINPUT-s10.0.0.1-ptcp--dport22-jACCEPT

#允许192.168.1.0网段

iptables-I2INPUT-s192.168.1.0/24-ptcp--dport22-jACCEPT

#拒绝所有

iptables-I3INPUT-ptcp--dport22-jDROP

#保存iptables的设置:

cp/etc/sysconfig/iptables/etc/sysconfig/iptables~

iptables-save/etc/sysconfig/iptables

最后,重启sshd服务使上面配置生效(不用担心重启时已打开的远程终端连接会断开,重启只会对新开的终端生效)

[root@c58ssh]#/etc/init.d/sshdrestart

Stoppingsshd:[OK]

Startingsshd:[OK]

三、用户及命令权限最小化

创建一个普通用户tom,将其加入sudo组,该用户作为系统管理员

groupaddsudo#创建sudo组

useradd-Gsudotom#创建tom用户,加入sudo组

passwdtom#设置tom用户的登陆密码

修改sudo配置文件,授权sudo组的用户可以以root身份执行所有命令(可以针对不同用户授予不同的命令执行权限,这里允许执行所有命令,生产环境中系统管理员应该按需为用户分配尽可能少的可执行命令,以实现权限最少化),用户执行的所有sudo操作都将记录在/var/log/sudo.log中,以便日后的安全事件排查。执行命令如下:

[root@cloud~]#cat/etc/sudoersEOF

%sudoALL=(root)ALL

Defaultslogfile=/var/log/sudo.log

EOF

[root@cloud~]#visudo-c

[root@cloud~]#echolocal2.debug/var/log/sudo.log/etc/syslog.conf

[root@cloud~]#/etc/init.d/syslogrestart

注:visudo-c命令用于检查/etc/sudoers文件的语法正确性

四、内核安全参数设置

vim/etc/sysctl.conf#添加如下内容:

#关闭对ping包的响应(可选,一般不建议,因为不方便网络故障时的排查)

net.ipv4.icmp_echo_ignore_all=1

#关闭对广播ping的响应

net.ipv4.icmp_echo_ignore_broadcasts=1

#开启syncookie用于防范synflood攻击,当出现syn等待队列溢出时(syn数量超过tcp_max_syn_backlog的设置值),启用cookie来处理,server在回复syn_ack前会先请求client回复一个序列号,该序列号中要求包含原先syn包中的信息,如果序列号不正确,则server端会忽略此syn连接。

net.ipv4.tcp_syncookies=1

#设置sync_ack的最大重传次数,默认值为5,范围0-255,重传5次的时间大约为180s

net.ipv4.tcp_synack_retries=3

#设置当keepalive打开的情况下,keepalive消息的发送间隔,默认为2小时(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,如果两边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间就是2小时,成就了空连接攻击,tcp_keepalive_time就是预防此情形的.)

net.ipv4.tcp_keepalive_time=1200

保存退出后,执行sysctl-p命令将以上设置加载到内核使其立刻生效

五、内核性能相关参数设置(可选)

vim/etc/sysctl.conf#添加如下内容:

#设置syn等待队列的长度,对于内存大于128M的机器,默认值是1024,在并发请求较大时,可以调大该值

net.ipv4.tcp_max_syn_backlog

#开启timewait重用。允许将time_waitsocket重新用于新的tcp连接

net.ipv4.tcp_tw_reuse=1

#开启tcp连接中time_waitsocket的快速回收

net.ipv4.tcp_tw_recycle=1

#TCP发送keepalive探测以确定该连接已经断开的次数,默认值为9

net.ipv4.tcp_keepalive_probes=5

#指定探测消息发送的频率,该值乘以tcp_keepalive_probes就可以得到从开始探测到连接被删除所需的时间。默认值为75,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)

net.ipv4.tcp_keepalive_intvl=15

#表示系统同时保持TIME_WAITsocket的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并输出警告信息。默认为180000,改为5000.对于squid服务器来说,此参数可以控制TIME_WAIT套接字的最大数量,避免squid服务器被大量的TIME_WAITsocket拖死。

net.ipv4.tcp_max_tw_buckets=5000

#表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000

net.ipv4.ip_local_port_range=102465000

保存退出后,执行sysctl-p命令将以上设置加载到内核使其立刻生效

centos java进程 怎么被启动的

1.查进程

ps命令查找与进程相关的PID号:

ps a显示现行终端机下的所有程序,包括其他用户的程序。

ps-A显示所有程序。

ps c列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

ps-e此参数的效果和指定"A"参数相同。

ps e列出程序时,显示每个程序所使用的环境变量。

ps f用ASCII字符显示树状结构,表达程序间的相互关系。

ps-H显示树状结构,表示程序间的相互关系。

ps-N显示所有的程序,除了执行ps指令终端机下的程序之外。

ps s采用程序信号的格式显示程序状况。

ps S列出程序时,包括已中断的子程序资料。

ps-t<终端机编号>指定终端机编号,并列出属于该终端机的程序的状况。

ps u以用户为主的格式来显示程序状况。

ps x显示所有程序,不以终端机来区分。

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。

ps aux| grep program_filter_word,ps-ef|grep tomcat

ps-ef|grep java|grep-v grep显示出所有的java进程,去处掉当前的grep进程。

2.杀进程

使用kill命令结束进程:kill xxx

常用:kill-9 324

Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall-9 NAME

3.进入到进程的执行文件所在的路径下,执行文件./文件名

附:

这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载

1.更改档案拥有者

命令: chown [-cfhvR] [--help] [--version] user[:group] file...

功能:更改文件或者文件夹的拥有者

参数格式:

user:新的档案拥有者的使用者 IDgroup:新的档案拥有者的使用者群体(group)

-c:若该档案拥有者确实已经更改,才显示其更改动作

-f:若该档案拥有者无法被更改也不要显示错误讯息

-h:只对于连结(link)进行变更,而非该 link真正指向的档案

-v:显示拥有者变更的详细资料

-R:对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)

例如:chown-R oracle:oinstall/oracle/u01/app/oracle

更改目录拥有者为oracle

2.修改权限

命令:chmod(change mode)

功能:改变文件的读写和执行权限。有符号法和八进制数字法。

选项:(1)符号法:

命令格式:chmod{u|g|o|a}{+|-|=}{r|w|x} filename

u(user)表示用户本人。

g(group)表示同组用户。

o(oher)表示其他用户。

a(all)表示所有用户。

+用于给予指定用户的许可权限。

-用于取消指定用户的许可权限。

=将所许可的权限赋给文件。

r(read)读许可,表示可以拷贝该文件或目录的内容。

w(write)写许可,表示可以修改该文件或目录的内容。

x(execute)执行许可,表示可以执行该文件或进入目录。

(2)八进制数字法:

命令格式:chmod abc file

其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。

4(100)表示可读。

2(010)表示可写。

1(001)表示可执行。

若要rwx属性则4+2+1=7;

若要rw-属性则4+2=6;

若要r-x属性则4+1=5。

例如:# chmod a+rx filename

让所有用户可以读和执行文件filename。

# chmod go-rx filename

取消同组和其他用户的读和执行文件filename的权限。

# chmod 741 filename

让本人可读写执行、同组用户可读、其他用户可执行文件filename。

# chmod-R 755/home/oracle

递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行

3.修改文件日期

命令:touch

格式:touch filenae

功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。

例如:% touch file

4.链接文件

命令:ln(link)

格式:ln [option] filename linkname

ln [option] directory pathname

功能:为文件或目录建立一个链。其中,filename和directory是源文件名和

源目录名;linkname和pathname分别表示与源文件或源目录名相链接的

文件或目录。

选项:-s为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接

注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出

现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。

例如:% ln-s filename linkname

5.显示日期

命令:date

例如:% date

6.显示日历

命令:cal(calendar)

格式:cal [month] year

功能:显示某年内指定的日历

例如:% cal 1998

7.显示文件头部

命令:head

格式:head [option] filename

功能:显示文件的头部

选项:缺省显示文件的头10行。

-i显示文件的开始 i行。

例如:% head filename

8.显示文件尾部

命令:tail

格式:tail [option] filename

功能:显示文件的尾部

选项:缺省显示文件的末10行。

-i显示文件最后 i行。

+i从文件的第i行开始显示。

例如:% tail filename

9.显示用户标识

命令:id

格式:id [option] [user]

功能:显示用户标识及用户所属的所有组。

选项:-a显示用户名、用户标识及用户所属的所有组

注释:

例如:% id username

10.查看当前登录的用户

命令:users

11.显示都谁登录到机器上

命令:who

格式:who

功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。

例如:% who

12.显示当前终端上的用户名

命令:whoami

格式:whoami

功能:显示出当前终端上使用的用户。

例如:% whoami

13.寻找文件

命令:find

格式:find pathname [option] expression

功能:在所给的路经名下寻找符合表达式相匹配的文件。

选项:-name表示文件名

-user用户名,选取该用户所属的文件

-size按大小查找,以block为单位,一个block是512B

-mtime n按最后一次修改时间查找,选取n天内被修改的文件

-perm按权限查找

-type按文件类型查找

-atime按最后一次访问时间查找

例如:% find./-name'*abc*'-print

14.搜索文件中匹配符

命令:grep

格式:grep [option] pattern filenames

功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。

选项:-i匹配时忽略大小写

-v找出模式失配的行

例如:% grep-i'java*'./test/run.sh

15.统计文件字数

命令:wc [option] filename

功能:统计文件中的文件行数、字数和字符数。

选项:-l统计文件的行数

-w统计文件的单词数

-c统计文件的字符数

注释:若缺省文件名则指标准输入

例如:% wc-c./test/run.sh

16.显示磁盘空间

命令:df(disk free)

格式:df [option]

功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总

字节数、已用字节数、剩余字节数占用百分比。

选项:

-a:显示全部的档案系统和各分割区的磁盘使用情形

-i:显示i-nodes的使用量

-k:大小用k来表示(默认值)

-t:显示某一个档案系统的所有分割区磁盘使用量

-x:显示不是某一个档案系统的所有分割区磁盘使用量

-T:显示每个分割区所属的档案系统名称

-h:表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB等易读的格式。

注释:

例如:% df-hi

17.查询档案或目录的磁盘使用空间

命令:du(disk usage)

格式:du [option] [filename]

功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小

选项:

-a:显示全部目录和其次目录下的每个档案所占的磁盘空间

-b:大小用bytes来表示(默认值为k bytes)

-c:最后再加上总计(默认值)

-s:只显示各档案大小的总合

-x:只计算同属同一个档案系统的档案

-L:计算所有的档案大小

-h:表示档案系统大小使用 GB、MB等易读的格式。

例如:% du-a

% du-sh/etc只显示该目录的总合

% du/etc| sort-nr| more统计结果用sort指令进行排序,

sort的参数-nr表示要以数字排序法进行反向排序。

18.显示进程

命令:ps

格式:ps [option]

功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。

选项:

-a显示所有进程信息

-U uidlist列出这个用户的所有进程

-e显示当前运行的每一个进程信息

-f显示一个完整的列表

-x显示包括没有终端控制的进程状况。

注释:

例如:% ps-ef

% ps-aux然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

19.终止进程

命令:kill

格式:kill [option] pid

功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process,

因为大部份送的都是用来杀掉 process的 SIGKILL或 SIGHUP,因此称为 kill

选项:-9强行终止进程

注释:pid标示进程号,可由ps命令得到。

例如:% kill-9 pid

你也可以用 kill-l来察看可代替 signal号码的数目字。kill的详细情形请参阅 man kill。

20.查看自己的IP地址

命令:ifconfig

格式:ifconfig-a

21.查看路由表

命令:netstat

格式:netstat-rn

22.远程登录

命令:telnet

格式:telnet hostname

23.文件传输

命令:ftp(file transfer program)

格式:ftp hostname

功能:网络文件传输及远程操作。

选项:ftp命令:

cd [dirname]进入远程机的目录

lcd [dirname]设置本地机的目录

dir/ls显示远程的目录文件

bin以二进制方式进行传输

asc以文本文件方式进行传输

get/mget从远程机取一个或多个文件

put/mput向远程机送一个或多个文件

prompt打开或关闭多个文件传送时的交互提示

close关闭与远程机的连接

quit退出ftp

!/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态

注释:

例如:% ftp hostname

24.查看自己的电子邮件

命令:mailx

格式:mailx

选项:

delete删除

next下一个

quit退出

reply回复

25.回忆命令

命令:history

格式:history

功能:帮助用户回忆执行过的命令。

选项:

注释:

例如:% history

26.网上对话

命令:talk

格式:talk username

功能:在网上与另一用户进行对话。

选项:

注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部

显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。

例如:% talk username

27.允许或拒绝接受信息

命令:mesg(message)

格式:mesg [n/y]

功能:允许或拒绝其它用户向自己所用的终端发送信息。

选项:n拒绝其它用户向自己所用的终端写信息

y允许其它用户向自己所用的终端写信息(缺省值)

注释:

例如:% mesg n

28.给其他用户写信息

命令:write

格式:write username [ttyname]

功能:给其他用户的终端写信息。

选项:

注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。

例如:write username

29.创建、修改、删除用户和群组

a.创建群组:

例如: groupadd oinstall创建群组名为oinstall的组

groupadd-g 344 dba

创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

b.修改群组:

groupmod:该命令用于改变用户组帐号的属性

groupmod–g新的GID用户组帐号名

groupmod–n新组名原组名:此命令由于改变用户组的名称

c.删除群组:

groupdel组名:该命令用于删除指定的组帐号

d.新建用户:

命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]]

[-f inactive] [-e expire ] [-p passwd] [-r] name

主要参数

-c:加上备注文字,备注文字保存在passwd的备注栏中。

-d:指定用户登入时的启始目录。

-D:变更预设值。

-e:指定账号的有效期限,缺省表示永久有效。

-f:指定在密码过期后多少天即关闭该账号。

-g:指定用户所属的群组。

-G:指定用户所属的附加群组。

-m:自动建立用户的登入目录。

-M:不要自动建立用户的登入目录。

-n:取消建立以用户名称为名的群组。

-r:建立系统账号。

-s:指定用户登入后所使用的shell。

-u:指定用户ID号。

举例:# useradd-g oinstall-G dba oracle创建Oracle用户

e.删除用户

命令: userdel用户名

删除指定的用户帐号

userdel–r用户名(userdel用户名;rm用户名):删除指定的用户帐号及宿主目录

例:#useradd-g root kkk//把kkk用户加入root组里

f.修改用户

命令: usermod

修改已有用户的信息

usermod–l旧用户名新用户名:修改用户名

usermod–L用户名:用于锁定指定用户账号,使其不能登陆系统

usermod–U用户名:对锁定的用户帐号进行解锁

passwd–d用户名:使帐号无口令,即用户不需要口令就能登录系统

例:#usermod-l user2 user1//把用户user2改名为user1

30.启动、关闭防火墙

永久打开或则关闭

chkconfig iptables on

chkconfig iptables off

即时生效:重启后还原

service iptables start

service iptables stop

或者:

/etc/init.d/iptables start

/etc/init.d/iptables stop

31.启动VSFTP服务

即时启动:/etc/init.d/vsftpd start

即时停止:/etc/init.d/vsftpd stop

开机默认VSFTP服务自动启动:

方法一:(常用\方便)

[root@localhost etc]# chkconfig--list|grep vsftpd(查看情况)

vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@localhost etc]# chkconfig vsftpd on(执行ON设置)

或者:方法二:

修改文件/etc/rc.local,把行/usr/local/sbin/vsftpd&插入文件中,以实现开机自动启动。

【实用】CentOS 7系统优化脚本

作为一名运维人员,部署操作系统的任务经常重复,操作内容大同小异。为此,可以将相同的操作制作成统一执行的脚本,通过手动输入不同部分实现自动化操作,节省大量时间。最近发现了一款好用的shell源码,稍作修改后分享给大家。

脚本主要实现系统优化功能,包括修改字符集、关闭selinux、关闭防火墙、安装常用工具和加快ssh登录等。

脚本结构如下:

1.主菜单

2.二级菜单

主要实现系统优化,如修改字符集、关闭selinux、关闭防火墙、安装常用工具和加快ssh登录等功能。

脚本代码如下:

sh

#!/bin/sh

./etc/rc.d/init.d/functions

exportLANG=zh_CN.UTF-8

#一级菜单

menu1(){

clear

cat</etc/locale.conf</dev/null

echo'#firewall-cmd--state'

firewall-cmd--state

systemctldisablefirewalld.service&>/dev/null

echo'#systemctllist-unit-files|grepfirewalld'

systemctllist-unit-files|grepfirewalld

action"完成禁用firewalld,生产环境下建议启用!"/bin/true

echo"==========================================================="

sleep5

}

#精简开机启动

chkset(){

echo"=======================精简开机启动========================"

systemctldisableauditd.service

systemctldisablepostfix.service

systemctldisabledbus-org.freedesktop.NetworkManager.service

echo'#systemctllist-unit-files|grep-E"auditd|postfix|dbus-org\.freedesktop\.NetworkManager"'

systemctllist-unit-files|grep-E"auditd|postfix|dbus-org\.freedesktop\.NetworkManager"

action"完成精简开机启动"/bin/true

echo"==========================================================="

sleep2

}

#修改文件描述符

limitset(){

echo"======================修改文件描述符======================="

echo'*-nofile65535'>/etc/security/limits.conf

ulimit-SHn65535

echo"#cat/etc/security/limits.conf"

cat/etc/security/limits.conf

echo"#ulimit-Sn;ulimit-Hn"

ulimit-Sn;ulimit-Hn

action"完成修改文件描述符"/bin/true

echo"==========================================================="

sleep2

}

#安装常用工具及修改yum源

yumset(){

echo"=================安装常用工具及修改yum源==================="

yuminstallwget-y&>/dev/null

if[$?-eq0];then

cd/etc/yum.repos.d/

\cpCentOS-Base.repoCentOS-Base.repo.$(date+%F)

ping-c1mirrors.aliyun.com&>/dev/null

if[$?-eq0];then

wget-O/etc/yum.repos.d/CentOS-Base.repo

yumcleanall&>/dev/null

yummakecache&>/dev/null

else

echo"无法连接网络"

exit$?

fi

else

echo"wget安装失败"

exit$?

fi

yum-yinstallntpdatelsofnet-toolstelnetvimlrzsztreenmapncsysstat&>/dev/null

action"完成安装常用工具及修改yum源"/bin/true

echo"==========================================================="

sleep2

}

#优化系统内核

kernelset(){

echo"======================优化系统内核========================="

chk_nf=`cat/etc/sysctl.conf|grepconntrack|wc-l`

if[$chk_nf-eq0];then

cat>>/etc/sysctl.conf</dev/null

if[$?-eq0];then

/usr/sbin/

echo"*/5****/usr/sbin/ntpdatentp.aliyun.com&>/dev/null">>/var/spool/cron/root

else

echo"ntpdate安装失败"

exit$?

fi

action"完成设置时间同步"/bin/true

echo"==========================================================="

sleep2

}

#history优化

historyset(){

echo"========================history优化========================"

chk_his=`cat/etc/profile|grepHISTTIMEFORMAT|wc-l`

if[$chk_his-eq0];then

cat>>/etc/profile<<'EOF'

#设置history格式

exportHISTTIMEFORMAT="[%Y-%m-%d%H:%M:%S][`whoami`][`whoami|awk'{print$NF}'|sed-r's#[()]##g'`]:"

#记录shell执行的每一条命令

exportPROMPT_COMMAND='\ if[-z"$OLD_PWD"];then exportOLD_PWD=$PWD; fi; if[!-z"$LAST_CMD"&&["$(history1)"!="$LAST_CMD"];then logger-t`whoami`_shell_dir"[$OLD_PWD]$(history1)"; fi; exportLAST_CMD="$(history1)"; exportOLD_PWD=$PWD;' EOF

source/etc/profile

else

echo"优化项已存在。"

fi

action"完成history优化"/bin/true

echo"==========================================================="

sleep2

}

main(){

menu1

case$num1in

1) localeset selinuxset firewalldset chkset limitset yumset kernelset sshset restartset ntpdateset historyset;;

2) menu2

case$num2in

1) localeset;;

2) selinuxset;;

3) firewalldset;;

4) chkset;;

5) limitset;;

6) yumset;;

7) kernelset;;

8) sshset;;

9) restartset;;

10) ntpdateset;;

11) historyset;;

12) main;;

13) exit;;

*) echo'Pleaseselectanumberfrom[1-13].';;

esac

;;

3) exit;;

*) echo'Err:Pleaseselectanumberfrom[1-3].' sleep3 main;;

esac

}

main$*

将脚本保存为init.sh,赋予执行权限并执行即可。

chmod+xinit.sh&&./init.sh

通过一键命令执行,同样能达到脚本的效果:

bash-c"$(curl-Ls.aaa.al/init.sh)"

如需新增功能,可在脚本基础上进行修改实现。

本书从实用角度出发,结合实际应用案例,模拟真实的系统环境,介绍电脑的使用方法与技巧,旨在帮助读者全面、系统地掌握电脑的应用。书中“高手支招”板块提供大量实用技巧,解决日常工作中遇到的常见问题。

阅读剩余
THE END