当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪你需要知道的16个Linux服务器监控命令       有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 SUSE Linux 就有一个非常棒而且专业的工具 YaST,KDE 的 KDE System Guard 同样很出色。当然,要使用这些工具,你必须在服务器跟前进行操.........
    ▪linux服务器基本安全配置手册       假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素。一份正确的linux基本安全配置手册就显得格外重要。在我本文中就向大家介绍在edhat/cen.........
    ▪Linux 服务器安全配置       第一部分:RedHat Linux篇   1.概述   Linux服务器版本:RedHat Linux AS   对于开放式的操作系统---Linux,系统的安全设定包括系统服务最小化、限制远程存取、隐藏重要资料、修补安全漏洞.........

[1]你需要知道的16个Linux服务器监控命令
    来源: 互联网  发布时间: 2013-12-24
有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 SUSE Linux 就有一个非常棒而且专业的工具 YaST,KDE 的 KDE System Guard 同样很出色。当然,要使用这些工具,你必须在服务器跟前进行操作,而且这些 GUI 的程序占用了很多系统资源,所以说,尽管 GUI 用来做基本的服务器健康状态监测挺好,但如果你想知道真正发生什么,请关掉 GUI 开始命令行之旅吧。

  你应该只在需要的时候去启动 GUI ,不用的时候关掉它。如果要让服务器保持最佳性能,你应该将 Linux 服务器的运行级别 runlevel 设置为 3 ,就是控制台模式,当你需要图形化桌面的时候使用 startx 命令来启动它。

  如果你的服务器启动后就直接进入图形界面,你需要修改配置 /etc/inittab 找到 initdefault 一样,将 id:5:initdefault 修改为 id:3:initdefault。

  如果你没找到 /etc/inittab 文件,那就创建一个新的,文件内容增加 id:3 这么一行。这样下次服务器启动的时候就不会进入图形界面。如果你不想等到服务器重启的时候才生效,你可以执行 init 3 这个命令。

  一旦你的服务器是在控制台模式下运行,你就可以开始我们接下来的内容。

  iostat

  iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。

  meminfo 和 free

  Meminfo 可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息:

  1cat /proc/meminfo

  另外你可以使用 free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细。

  mpstat

  mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

  关于 mpstat 执行结果中的参数意思请参考此贴。

  netstat

  Netstat 和 ps 命令类似,是 Linux 管理员基本上每天都会用的工具,它显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些常用的参数:

  1-a Show all socket information

  2-r Show routing information

  3-i Show network interface statistics

  4-s Show network protocol statistics

  nmon

  Nmon, 是 Nigel's Monitor 的缩写,是一个使用很普遍的开源工具,用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具.

  要运行 nmon,你可以在命令行中启动它,然后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也可以使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于日后分析。

  在每日的监控工作中,我发现 nmon 是我最常用的工具。

  pmap

  pmap 命令用来报告每个进程占用内存的详细情况,可用来看是否有进程超支了,该命令需要进程 id 作为参数。

  ps 和 pstree

  ps 和 pstree 命令是 Linux 系统管理员最好的朋友,都可以用来列表正在运行的所有进程。ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可以使用 kill 来杀掉它。

  sar

  sar 程序是系统监控工具里的瑞士军刀。该程序包含三个工具:sar 用来显示数据,sa1 和 sa2 用来收集数据并保存。sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。sar 和 nmon 最大的不同就是 sar 跟适合用作长期的监控,而 nmon 可以让你快速的了解系统当前状态。

  strace

  strace 经常被认为是程序员调试的工具,但不止如此。它可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。

  Strace 也有一个缺陷,但它在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用。

  tcpdump

  Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络。当然,如果你要获取跟详细的信息,你应该使用 Wireshark (下面我们会介绍).

  top

  top 命令显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键。

  uptime

  uptime 命令告诉你这台服务器从开机启动到现在已经运行了多长时间了。同时也包含了从启动到现在服务器的平均负载情况

  vmstat

  你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

  Wireshark

  Wireshark, 前身是 Ethereal ,是一个网络协议检测程序,让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等.

 

  

  这里罗列的是大多数最有价值的 Linux 监控程序,当然,你可能还会使用其他的工具,不妨跟大家分享下


    
[2]linux服务器基本安全配置手册
    来源: 互联网  发布时间: 2013-12-24

假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素。一份正确的linux基本安全配置手册就显得格外重要。在我本文中就向大家介绍在edhat/centos 4,5下的Linux服务器基本安全配置手册。

安装注意

1.删除系统特殊的的用户帐号:

禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。

#为删除你系统上的用户,用下面的命令:
[root@c1gstudio]# userdel username
#批量删除方式
#这里删除"adm lp sync shutdown halt mail news uucp operator games gopher ftp "账号
#如果你开着ftp等服务可以把ftp账号保留下来。
for i in adm lp sync shutdown halt mail news uucp ope
rator games gopher ftp ;do userdel $i ;done

2.删除系统特殊的组帐号

[root@c1gstudio]# groupdel groupname
#批量删除方式
for i in adm lp mail news uucp games dip pppusers pop
users slipusers ;do groupdel $i ;done

3.用户密码设置

安装linux时默认的密码最小长度是5个字节,但这并不够,要把它设为8个字节。修改最短密码长度需要编辑login.defs文件#vi /etc/login.defs

PASS_MAX_DAYS  99999  ##密码设置最长有效期(默认值)
PASS_MIN_DAYS  0    ##密码设置最短有效期
PASS_MIN_LEN  5    ##设置密码最小长度,将5改为8
PASS_WARN_AGE  7    ##提前多少天警告用户密码即将过期。
然后修改Root密码
#passwd root
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

4.修改自动注销帐号时间

自动注销帐号的登录,在Linux系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTSIZE="后面加入下面这行:

TMOUT=300

300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。

5.限制Shell命令记录大小

默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。
您可以编辑/etc/profile文件,修改其中的选项如下:

HISTFILESIZE=30或HISTSIZE=30
#vi /etc/profile
HISTSIZE=30

6.注销时删除命令记录

编辑/etc/skel/.bash_logout文件,增加如下行:

rm -f $HOME/.bash_history
这样,系统中的所有用户在注销时都会删除其命令记录。
如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。

7.用下面的命令加需要的用户组和用户帐号

[root@c1gstudio]# groupadd
例如:增加website 用户组,groupadd website
然后调用vigr命令查看已添加的用户组
用下面的命令加需要的用户帐号
[root@c1gstudio]# useradd username –g website //添加用户到website组(作为webserver的普通管理员,而非root管理员)
然后调用vipw命令查看已添加的用户
用下面的命令改变用户口令(至少输入8位字母和数字组合的密码,并将密码记录于本地机的专门文档中,以防遗忘)
[root@c1gstudio]# passwd username

8.阻止任何人su作为root

如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su加下面的行:

#vi /etc/pam.d/su
auth sufficient /lib/security/$ISA/pam_rootok.so debug
auth required /lib/security/$ISA/pam_wheel.so group=website
意味着仅仅website组的用户可以su作为root.

9.修改ssh服务的root登录权限

修改ssh服务配置文件,使的ssh服务不允许直接使用root用户来登录,这样减少系统被恶意登录攻击的机会。

#vi /etc/ssh/sshd_config
PermitRootLogin yes

将这行前的#去掉后,修改为:

PermitRootLogin no

10.修改ssh服务的sshd 端口

ssh默认会监听在22端口,你可以修改至6022端口以避过常规的扫描。
注意:修改端口错误可能会导致你下次连不到服务器,可以先同时开着22和6022两个端口,然后再关掉22端口;
重启sshd不会弹掉你当前的连接,可以另外开一个客户端来测试服务;

#vi /etc/ssh/sshd_config
#增加修改
#Port 22 #关闭22端口
Port 6022 #增加6022端口
#重启sshd服务
service sshd restart
检查一下sshd的监听端口对不对
netstat -lnp|grep ssh
#iptables开放sshd的6022端口
vi /etc/sysconfig/iptables
#如果使用redhat默认规则则增加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6022 -j ACCEPT
#或
iptables -A INPUT -p tcp --dport 6022 -j ACCEPT
iptables -A OUTPUT -p udp --sport 6022 -j ACCEPT

重启iptables 服务

service iptables restart
#测试两个端口是否都能连上,连上后再将22端口删除

详细参考:
Linux操作系统下SSH默认22端口修改方法

11.关闭系统不使用的服务:

cd /etc/init.d #进入到系统init进程启动目录
在这里有两个方法,可以关闭init目录下的服务,

一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时候找不到这个服务的启动文件。

二、使用chkconfig系统命令来关闭系统启动等级的服务。

注:在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。

使用chkcofig命令来关闭不使用的系统服务 (level前面为2个减号)要想在修改启动脚本前了解有多少服务正在运行,输入:

ps aux | wc -l

然后修改启动脚本后,重启系统,再次输入上面的命令,就可计算出减少了多少项服务。越少服务在运行,安全性就越好。另外运行以下命令可以了解还有多少服务在运行:

netstat -na --ip

批量方式先停止服务

for i in acpid anacron apmd atd auditd autofs avahi-daemon avahi-dnsconfd bluetooth cpuspeed cups dhcpd firstboot gpm haldaemon hidd ip6tables ipsec isdn kudzu lpd mcstrans messagebus microcode_ctl netfs nfs nfslock nscd pcscd portmap readahead_early restorecond rpcgssd rpcidmapd rstatd sendmai
l setroubleshoot snmpd sysstat xfs xinetd yppasswdd ypserv yum-updatesd ;do service $i stop;done

关闭启动服务

for i in acpid anacron apmd atd auditd autofs avahi-daemon avahi-dnsconfd bluetooth cpuspeed cups dhcpd firstboot gpm haldaemon hidd ip6tables ipsec isdn kudzu lpd mcstrans messagebus microcode_ctl netfs nfs nfslock nscd pcscd portmap readahead_early restorecond rpcgssd rpcidmapd rstatd sendmai
l setroubleshoot snmpd sysstat xfs xinetd yppasswdd ypserv yum-updatesd ;do chkconfig $i off;done

以下为手动方式及解释,执行批量方式后不需再执行了

chkconfig --level 345 apmd off ##笔记本需要
chkconfig --level 345 netfs off ## nfs客户端
chkconfig --level 345 yppasswdd off ## NIS服务器,此服务漏洞很多
chkconfig --level 345 ypserv off ## NIS服务器,此服务漏洞很多
chkconfig --level 345 dhcpd off ## dhcp服务
chkconfig --level 345 portmap off ##运行rpc(111端口)服务必需
chkconfig --level 345 lpd off ##打印服务
chkconfig --level 345 nfs off ## NFS服务器,漏洞极多
chkconfig --level 345 sendmail off ##邮件服务, 漏洞极多
chkconfig --level 345 snmpd off ## SNMP,远程用户能从中获得许多系统信息
chkconfig --level 345 rstatd off ##避免运行r服务,远程用户可以从中获取很多信息
chkconfig --level 345 atd off ##和cron很相似的定时运行程序的服务
注:以上chkcofig 命令中的3和5是系统启动的类型,以下为数字代表意思
0:开机(请不要切换到此等级)
1:单人使用者模式的文字界面
2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能
3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能
4:某些发行版的linux使用此等级进入x windows system
5:某些发行版的linux使用此等级进入x windows system
6:重新启动

如果不指定--level 单用on和off开关,系统默认只对运行级3,4,5有效

chkconfig cups off #打印机
chkconfig bluetooth off # 蓝牙
chkconfig hidd off # 蓝牙
chkconfig ip6tables off # ipv6
chkconfig ipsec off # vpn
chkconfig auditd off #用户空间监控程序
chkconfig autofs off #光盘软盘硬盘等自动加载服务
chkconfig avahi-daemon off #主要用于Zero Configuration Networking ,一般没什么用建议关闭
chkconfig avahi-dnsconfd off #主要用于Zero Configuration Networking ,同上,建议关闭
chkconfig cpuspeed off #动态调整CPU频率的进程,在服务器系统中这个进程建议关闭
chkconfig isdn off #isdn
chkconfig kudzu off #硬件自动监测服务
chkconfig nfslock off #NFS文档锁定功能。文档共享支持,无需的能够关了
chkconfig nscd off #负责密码和组的查询,在有NIS服务时需要
chkconfig pcscd off #智能卡支持,,如果没有可以关了
chkconfig yum-updatesd off #yum更新
chkconfig acpid off
chkconfig autofs off
chkconfig firstboot off
chkconfig mcstrans off #selinux
chkconfig microcode_ctl off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig setroubleshoot off
chkconfig xfs off
chkconfig xinetd off
chkconfig messagebus off
chkconfig gpm off #鼠标
chkconfig restorecond off #selinux
chkconfig haldaemon off
chkconfig sysstat off
chkconfig readahead_early off
chkconfig anacron off

需要保留的服务

crond , irqbalance , microcode_ctl ,network , sshd ,syslog

因为有些服务已运行,所以设置完后需重启

chkconfig
/*

语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

参数:

 --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
 --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
 --level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕
*/

12.阻止系统响应任何从外部/内部来的ping请求

既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#这个可以不做哈

13.修改“/etc/host.conf”文件

“/etc/host.conf”说明了如何解析地址。编辑“/etc/host.conf”文件(vi /etc/host.conf),加入下面这行:
# Lookup names via DNS first then fall back to /etc/hosts.
order hosts,bind
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on

第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否“/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。

14.不允许从不同的控制台进行root登陆

"/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑"/etc/securetty"文件,再不需要登陆的TTY设备前添加“#”标志,来禁止从该TTY设备进行root登陆。

在/etc/inittab文件中有如下一段话:

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

系统默认的可以使用6个控制台,即Alt+F1,Alt+F2...,这里在3,4,5,6前面加上“#”,注释该句话,这样现在只有两个控制台可供使用,最好保留两个。然后重新启动init进程,改动即可生效!

15.禁止Control-Alt-Delete键盘关闭命令

在"/etc/inittab" 文件中注释掉下面这行(使用#):
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
为了使这项改动起作用,输入下面这个命令:
# /sbin/init q

16.用chattr命令给下面的文件加上不可更改属性。

[root@c1gstudio]# chattr +i /etc/passwd
[root@c1gstudio]# chattr +i /etc/shadow
[root@c1gstudio]# chattr +i /etc/group
[root@c1gstudio]# chattr +i /etc/gshadow

【注:chattr是改变文件属性的命令,参数i代表不得任意更动文件或目录,此处的i为不可修改位(immutable)。查看方法:lsattr /etc/passwd,撤销为chattr –i /etc/group】

补充说明:这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

 a:让文件或目录仅供附加用途。
 b:不更新文件或目录的最后存取时间。
 c:将文件或目录压缩后存放。
 d:将文件或目录排除在倾倒操作之外。
 i:不得任意更动文件或目录。
 s:保密性删除文件或目录。
 S:即时更新文件或目录。
 u:预防以外删除。

参数:

 -R 递归处理,将指定目录下的所有文件及子目录一并处理。
 -v<版本编号> 设置文件或目录版本。
 -V 显示指令执行过程。
 +<属性> 开启文件或目录的该项属性。
 -<属性> 关闭文件或目录的该项属性。
 =<属性> 指定文件或目录的该项属性。

17.给系统服务端口列表文件加锁

主要作用:防止未经许可的删除或添加服务

chattr +i /etc/services
【查看方法:lsattr /etc/ services,撤销为chattr –i /etc/ services】

18.系统文件权限修改

Linux文件系统的安全主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。

(1)修改init目录文件执行权限:

chmod -R 700 /etc/init.d/* (递归处理,owner具有rwx,group无,others无)

(2)修改部分系统文件的SUID和SGID的权限:

chmod a-s /usr/bin/chage
chmod a-s /usr/bin/gpasswd
chmod a-s /usr/bin/wall
chmod a-s /usr/bin/chfn
chmod a-s /usr/bin/chsh
chmod a-s /usr/bin/newgrp
chmod a-s /usr/bin/write
chmod a-s /usr/sbin/usernetctl
chmod a-s /usr/sbin/traceroute
chmod a-s /bin/mount
chmod a-s /bin/umount
chmod a-s /sbin/netreport

(3)修改系统引导文件

chmod 600 /etc/grub.conf
chattr +i /etc/grub.conf
【查看方法:lsattr /etc/grub.conf,撤销为chattr –i /etc/grub.conf】

19.增加dns

#vi /etc/resolv.conf
nameserver 8.8.8.8 #google dns
nameserver 8.8.4.4

20.hostname 修改

#注意需先把mysql、postfix等服务停了
1.hostname servername
2.vi /etc/sysconfig/network
service network restart
3.vi /etc/hosts

21.selinux 修改

开启selinux可以增加安全性,但装软件时可能会遇到一些奇怪问题
以下是关闭方法

#vi /etc/selinux/config

改成disabled

22.关闭ipv6

echo "alias net-pf-10 off" >> /etc/modprobe.conf
echo "alias ipv6 off" >> /etc/modprobe.conf
#vi /etc/sysconfig/network
NETWORKING_IPV6=no

重启服务

Service ip6tables stop
Service network restart

关闭自动启动

chkconfig --level 235 ip6tables off

23.设置iptables

iptables 默认安全规则脚本

重启系统

以上大部分设置可以运行脚本来完成。linux安全设置快捷脚本

设置完成后重启系统

其它设置项

linux调整系统时区/时间的方法

把/usr/share/zoneinfo里相应的时区与/etc/localtime做个软link.比如使用上海时区的时间:ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 如果要使用UTC计时方式,则应在/etc/sysconfig/clock文件里改UTC=TRUE 时间的设置: 使用date 命令加s参数修改,注意linux的时间格式为"月日时分年",也可以只修改时间date -s 22:30:20,如果修改的是年月日和时间,格式为"月日时分年.秒",2007-03-18 11:01:56则应写为"date -s 031811012007.56 硬件时间与当前时间更新: hwclock --systohc 如果硬件记时用UTC,则为 hwclock --systohc --utc

linux调整系统时区/时间的方法

1) 找到相应的时区文件

/usr/share/zoneinfo/Asia/Shanghai

用这个文件替换当前的/etc/localtime文件。
步骤: cp –i /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

选择覆盖

2) 修改/etc/sysconfig/clock文件,修改为:

ZONE="Asia/Shanghai"
UTC=false
ARC=false

3)
时间设定成2005年8月30日的命令如下:

#date -s 08/30/2005

将系统时间设定成下午6点40分0秒的命令如下:

#date -s 18:40:00

4)同步BIOS时钟,强制把系统时间写入CMOS,命令如下:

#clock -w

安装ntpd

#yum install ntp
#chkconfig --levels 235 ntpd on
#ntpdate ntp.api.bz #先手动校准下
#service ntpd start

设置语言

英文语言,中文支持

#vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

tmpwatch 定时清除

假设服务器自定义了php的session和upload目录

#vi /etc/cron.daily/tmpwatch
在240 /tmp 前增加
-x /tmp/session -x /tmp/upload
#mkdir /tmp/session
#mkdir /tmp/upload
#chown nobody:nobody /tmp/upload
#chmod 0770 /tmp/upload

    
[3]Linux 服务器安全配置
    来源: 互联网  发布时间: 2013-12-24
第一部分:RedHat Linux篇
  1.概述
  Linux服务器版本:RedHat Linux AS
  对于开放式的操作系统---Linux,系统的安全设定包括系统服务最小化、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经常性的安全检查等。本文主要从用户设置、如何开放服务、系统优化等方面进行系统的安全配置,以到达使Linux服务器更安全、稳定。
  2.用户管理
  在 Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成。系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令以加密的形式存放在/etc/shadow文件中。在正常情况下,这些口令和其他信息由操作系统保护,能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程序。但是如果配置不当或在一些系统运行出错的情况下,这些信息可以被普通用户得到。进而,不怀好意的用户就可以使用一类被称为“口令破解”的工具去得到加密前的口令。
  2.1 删除系统特殊的的用户帐号和组帐号:
  #userdel username
  userdel adm
  userdel lp
  userdel sync
  userdel shutdown
  userdel halt
  userdel news
  userdel uucp
  userdel operator
  userdel games
  userdel gopher
  以上所删除用户为系统默认创建,但是在常用服务器中基本不使用的一些帐号,但是这些帐号常被黑客利用和攻击服务器。
  #groupdel username
  groupdel adm
  groupdel lp
  groupdel news
  groupdel uucp
  groupdel games
  groupdel dip
  同样,以上删除的是系统安装是默认创建的一些组帐号。这样就减少受攻击的机会。
  2.2 用户密码设置:
  安装linux时默认的密码最小长度是5个字节,但这并不够,要把它设为8个字节。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs)
  PASS_MAX_DAYS 99999 ##密码设置最长有效期(默认值)
  PASS_MIN_DAYS 0 ##密码设置最短有效期
  PASS_MIN_LEN 5 ##设置密码最小长度
  PASS_WARN_AGE 7 ##提前多少天警告用户密码即将过期。
  2.3 修改自动注销帐号时间:
  自动注销帐号的登录,在Linux系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTSIZE="后面加入下面这行:
  TMOUT=300
  300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。
  2.4 给系统的用户名密码存放文件加锁:
  chattr +i /etc/passwd
  chattr +i /etc/shadow
  chattr +i /etc/gshadow
  chattr +i /etc/group
  注:chattr是改变文件属性的命令,参数i代表不得任意更动文件或目录,此处的i为不可修改位(immutable)。查看方法:lsattr /etc/passwd
  3.服务管理
  在Linux系统的服务管理方面,如果想做到服务的最好安全,其中主要的就是升级服务本身的软件版本,另外一个就是关闭系统不使用的服务,做到服务最小化。
  3.1 关闭系统不使用的服务:
  cd /etc/init.d ##进入到系统init进程启动目录
  在这里有两个方法,可以关闭init目录下的服务,一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时候找不到这个服务的启动文件。二、使用chkconfig系统命令来关闭系统启动等级的服务。
  注:在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。
  第一种:修改文件名的方法
  Cd /etc/init.d/
  mv apmd apmd.old ##笔记本需要
  mv netfs netfs.old ## nfs客户端
  mv yppasswdd yppasswdd.old ## NIS服务器,此服务漏洞很多
  mv ypserv ypserv.old ## NIS服务器,此服务漏洞很多
  mv dhcpd dhcpd.old ## dhcp服务
  mv portmap portmap.old ##运行rpc(111端口)服务必需
  mv lpd lpd.old ##打印服务
  mv nfs nfs.old ## NFS服务器,漏洞极多
  mv sendmail sendmail.old ##邮件服务, 漏洞极多
  mv snmpd snmpd.old ## SNMP,远程用户能从中获得许多系统信息
  mv rstatd rstatd.old ##避免运行r服务,远程用户可以从中获取很多信息
  mv atd atd.old ##和cron很相似的定时运行程序的服务
  第二种:使用chkcofig命令来关闭不使用的系统服务
  chkconfig ?Clevel 35 apmd off
  chkconfig ?Clevel 35 netfs off
  chkconfig ?Clevel 35 yppasswdd off
  chkconfig ?Clevel 35 ypserv off
  chkconfig ?Clevel 35 dhcpd off
  chkconfig ?Clevel 35 portmap off
  chkconfig ?Clevel 35 lpd off
  chkconfig ?Clevel 35 nfs off
  chkconfig ?Clevel 35 sendmail off
  chkconfig ?Clevel 35 snmpd off
  chkconfig ?Clevel 35 rstatd off
  chkconfig ?Clevel 35 atd off
  注:以上chkcofig 命令中的3和5是系统启动的类型,3代表系统的多用启动方式,5代表系统的X启动方式。
  3.2 给系统服务端口列表文件加锁
  主要作用:防止未经许可的删除或添加服务
  chattr +i /etc/services
  3.3 修改ssh服务的root登录权限
  修改ssh服务配置文件,使的ssh服务不允许直接使用root用户来登录,这样建设系统被恶意登录攻击的机会。
  vi /etct/ssh/sshd_config
  PermitRootLogin yes
  将这行前的#去掉后,修改为:PermitRootLogin no
  4.系统文件权限
  Linux 文件系统的安全主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。
  4.1 修改init目录文件执行权限:
  chmod -R 700 /etc/init.d/*
  4.2 修改部分系统文件的SUID和SGID的权限:
  chmod a-s /usr/bin/chage
  chmod a-s /usr/bin/gpasswd
  chmod a-s /usr/bin/wall
  chmod a-s /usr/bin/chfn
  chmod a-s /usr/bin/chsh
  chmod a-s /usr/bin/newgrp
  chmod a-s /usr/bin/write
  chmod a-s /usr/sbin/usernetctl
  chmod a-s /usr/sbin/traceroute
  chmod a-s /bin/mount
  chmod a-s /bin/umount
  chmod a-s /bin/ping
  chmod a-s /sbin/netreport
  4.3 修改系统引导文件
  chmod 600 /etc/grub.conf
  chattr +i /etc/grub.conf
  5.系统优化
  5.1 虚拟内存优化:
  一般来说,linux的物理内存几乎是完全used。这个和windows非常大的区别,它的内存管理机制将系统内存充分利用,并非windows无论多大的内存都要去使用一些虚拟内存一样。
  在/proc/sys/vm/freepages中三个数字是当前系统的:最小内存空白页、最低内存空白页和最高内存空白。
  注意,这里系统使用虚拟内存的原则是:如果空白页数目低于最高空白页设置,则使用磁盘交换空间。当达到最低空白页设置时,使用内存交换。内存一般以每页4k 字节分配。最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;最高内存空白页设置是系统内存的6倍。
  以下以1G内存为例修改系统默认虚拟内存参数大小:
  echo "2048 4096 6444" >/proc/sys/vm/freepages
  6.日志管理
  6.1 系统引导日志:
  dmesg
  使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的
  内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。
  6.2 系统运行日志:
  A、Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。
  以下是常用的系统日志文件名称及其描述:
  lastlog 记录用户最后一次成功登录时间
  loginlog 不良的登陆尝试记录
  messages 记录输出到系统主控台以及由syslog系统服务程序产生的消息
  utmp 记录当前登录的每个用户
  utmpx 扩展的utmp
  wtmp 记录每一次用户登录和注销的历史信息 wtmpx 扩展的wtmp
  vold.log 记录使用外部介质出现的错误
  xferkig 记录Ftp的存取情况 sulog 记录su命令的使用情况
  acct 记录每个用户使用过的命令
  aculog 拨出自动呼叫记录
  B、/var/log/messages
  messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。
  C、/var/log/XFree86.0.log
  这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。
  D、在/var/log 目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。日志文件会变得特别大,特别笨重。Linux 提供了一个命令来轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。 logrotate 通常是定时自动运行的,但是也可以手工运行。当执行后,logrotate 将取得当前版本的日志文件,然后在这个文件名最后附加一个“.1”。其他更早轮循的文件为“.2”、“.3”,依次类推。文件名后的数字越大,日志就越老。
  可以通过编辑 /etc/logrotate.conf 文件来配置 logrotate 的自动行为。通过 man logrotate 来学习 logrotate 的全部细节。
  其中:
  # rotate log files weekly
  weekly
  这里代表每个日志文件是每个星期循环一次,一个日志文件保存一个星期的内容。
  # keep 4 weeks worth of backlogs
  rotate 4
  这里代表日志循环的次数是4次,即可以保存4个日志文件。
  E、定制日志
  可以通过编辑 /et/syslog.conf 和 /etc/sysconfig/syslog 来配置它们的行为,可以定制系统日志的存放路径和日志产生级别。
  6.3 系统各用户操作日志:
  last
  单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
  history
  history 命令能够保存最近所执行的命令。如果是root命令所保存的命令内容在/root/.bash_history文件中,如果是普通用户,操作所命令保存在这个用户的所属目录下,即一般的/home/username/.bash_history。这个history的保存值可以设置,编辑/etc /profile文件,其中的HISTSIZE=1000的值就是history保存的值。
  7.防火墙
  7.1 iptables类型防火墙:
  7.1.1 iptables概念:
  Iptalbes(IP包过滤器管理)是用来设置、维护和检查Linux内核的IP包过滤规则的。
  可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。
  通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标 ACCEPT 允许该信息包通过。还可以使用目标 DROP 或 REJECT 来阻塞并杀死信息包。对于可对信息包执行的其它操作,还有许多其它目标。
  根据规则所处理的信息包的类型,可以将规则分组在链中。处理入站信息包的规则被添加到 INPUT 链中。处理出站信息包的规则被添加到 OUTPUT 链中。处理正在转发的信息包的规则被添加到 FORWARD 链中。这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其它许多可用的链的类型(如 PREROUTING 和 POSTROUTING),以及提供用户定义的链。每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。
  建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。
  如果信息包源自外界并前往系统,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的 INPUT 链。如果信息包源自系统内部或系统所连接的内部网上的其它源,并且此信息包要前往另一个外部系统,那么信息包被传递到 OUTPUT 链。类似的,源自外部系统并前往外部系统的信息包被传递到 FORWARD 链。
  7.1.2 iptables实例1:
  #!/bin/sh
  # 禁止系统的转发包功能
  echo 0 > /proc/sys/net/ipv4/ip_forward
  # 清楚iptables原有规则,并设置iptables默认规则
  iptables -t nat -F POSTROUTING
  iptables -t nat -F PREROUTING
  iptables -t nat -F OUTPUT
  iptables -F
  iptables -P INPUT DROP
  iptables -P FORWARD ACCEPT
  iptables -P OUTPUT ACCEPT
  # 在input规则中需要打开的tcp、upd端口
  iptables -A INPUT -j ACCEPT -p tcp --dport 80
  iptables -A INPUT -j ACCEPT -p tcp --dport 22
  iptables -A INPUT -j ACCEPT -p tcp --dport 25
  iptables -A INPUT -j ACCEPT -p tcp --dport 1352
  iptables -A INPUT -p udp --destination-port 53 -j ACCEPT
  # 在input规则中状态为:STATE RELATED 的包都接受
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  # 启用系统ip转发功能
  echo 1 > /proc/sys/net/ipv4/ip_forward
  < --end-- >
  7.1.3 iptables实例2:
  注:这个实例中,只需要设置tcp、udp端口和服务器网络段ip范围即可,其他已经默认设置好。
  #!/bin/sh
  # make:yongzhang
  # time:2004-06-18
  # e-mail: yongzhang@wiscom.com.cn
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  ##tcp allow ports
  TPORTS="80 22"
  ##udp allow ports
  UPORTS="53"
  ##internal server_ip range
  SERVER_IP="172.18.10.0/24"
  ##disable forwarding
  echo 0 > /proc/sys/net/ipv4/ip_forward
  ##reset default policies
  iptables -P INPUT ACCEPT
  iptables -P FORWARD ACCEPT
  iptables -P OUTPUT ACCEPT
  iptables -t nat -P PREROUTING ACCEPT
  iptables -t nat -P POSTROUTING ACCEPT
  iptables -t nat -P OUTPUT ACCEPT
  ##del all iptables rules
  iptables -F INPUT
  iptables -F FORWARD
  iptables -F OUTPUT
  ##clean all non-default chains
  iptables -X
  iptables -t nat -X
  ##iptables default rules
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT ACCEPT
  ##allow ping packets
  iptables -A INPUT -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
  iptables -A INPUT -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
  iptables -A INPUT -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT
  iptables -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
  iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
  #iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -m limit --limit 5/s -j ACCEPT
  iptables -A FORWARD -p ICMP -j ACCEPT
  ##enable forwarding
  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  ##STATE RELATED for router
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  ##accept internal packets on the internal i/f
  iptables -A INPUT -s $SERVER_IP -p tcp -j ACCEPT
  ##open ports on router for server/services
  ##TCP PORTS
  for ATP in $TPORTS
  do
  iptables -A INPUT ! -s $SERVER_IP -d $SERVER_IP -p tcp --destination-port $ATP -j ACCEPT
  iptables -A FORWARD -p tcp --destination-port $ATP -j ACCEPT
  done
  ##UDP PORTS
  for AUP in $UPORTS
  do
  iptables -A INPUT -p udp --destination-port $AUP -j ACCEPT
  iptables -A FORWARD -p udp --destination-port $AUP -j ACCEPT
  done
  ##bad_packets chain
  ##drop INVALID packets immediately
  iptables -A INPUT -p ALL -m state --state INVALID -j DROP
  ##limit SYN flood
  #iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
  #iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
  ##deny all ICMP packets,eth0 is external net_eth
  #iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p ICMP -j DROP
  ##allow loopback
  iptables -A INPUT -i lo -p all -j ACCEPT
  iptables -A OUTPUT -o lo -p all -j ACCEPT
  ##enable forwarding
  echo 1 > /proc/sys/net/ipv4/ip_forward
  < --end-- >
  7.2 ipchains类型防火墙:
  7.2.1 ipchains概念:
  Ipchains 被用来安装、维护、检查Linux内核的防火墙规则。规则可以分成四类:IP input链、IP output链、IP forward链、user defined 链。
  一个防火墙规则指定包的格式和目标。当一个包进来时, 核心使用input链来决定它的命运。 如果它通过了, 那么核心将决定包下一步该发往何处(这一步叫路由)。假如它是送往另一台机器的, 核心就运用forward链。如果不匹配,进入目标值所指定的下一条链,那有可能是一条user defined链,或者是一个特定值: ACCEPT,DENY,REJECT,MASQ,REDIRECT,RETURN。
  ACCEPT意味着允许包通过,DENY 扔掉包就象没有受到过一样,REJECT也把包扔掉,但(假如它不是 ICMP 包)产生一个 ICMP 回复来告诉发包者,目的地址无法到达(请注意DENY和REJECT对于ICMP包是一样的)。
  MASQ 告诉核心伪装此包,它只对forward 链和user defined链起作用,想让它起作用, 编译核心时必需让 IP Masquerading 起作用。
  REDIRECT只对input链和user defined链起作用。它告诉核心把无论应送到何处的包改送到一个本地端口. 只有 TCP 和 UDP 协议可以使用此指定. 任意用 '-j REDIRECT' 指定一个端口(名字或编号)可以使送往此的包被重定向到某个特殊的端口, 即使它被标记为送到其它端口。想让它起作用,编译内核时,必须让CONFIG_IP_TRANSPARENT_PROXY起作用。
  最后的一个目标指定是 RETURN, 它跳过它下面的所有规则, 直到链的末尾。
  任何其它的目标指定表示一个用户自定义的链。包将在那个链中通过. 假如那个链没有决定此包的命运, 那么在那个链中的传输就完成了,包将通过当前链的下一个规则。
  7.2.2 ipchains实例:
  ##清除input规则的规则,并改变input默认的规则链策略为REJECT
  -F input
  -P input REJECT
  ##以下是允许input规则链的tcp端口为:80 81 22 123
  -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT
  -A input -s 0/0 -d 0/0 81 -p tcp -y -j ACCEPT
  -A input -s 0/0 -d 0/0 22 -p tcp -y -j ACCEPT
  -A input -s 0/0 -d 0/0 123 -p udp -j ACCEPT
  ##设置除了以上允许的input规则链以为,拒绝0-1023、2049、6000-6009、7100的tcp和upd端口,
  -A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT
  -A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT
  -A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT
  -A input -p udp -s 0/0 -d 0/0 2049 -j REJECT
  -A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT
  -A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT
  ##允许系本身统网卡上发生的所有包通过
  -A input -s 0/0 -d 0/0 -i lo -j ACCEPT
  -A input -s 0/0 -d 0/0 -i eth0 -j ACCEPT
  -A input -s 0/0 -d 0/0 -i eth1 -j ACCEPT
  ##清除output规则的规则,并改变output默认的规则链策略为ACCEPT
  -F output
  -P output ACCEPT
  ##清除forward规则的规则,并改变forward默认的规则链策略为DENY,设置了forward规则链允许对10.10.11.0/24网段的包可以转发并且做伪装处理。
  -F forward
  -P forward DENY
  -A forward -s 10.10.11.0/24 -j MASQ

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell脚本函数定义和函数参数 iis7站长之家
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3