操作系统

Linux系统zip压缩命令详细参数,附文件排除选项的正确用法

这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了50多MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我第一想到的办法就是在网站ZIP压缩打包的时候排除缓存文件夹。 下面是从网上找来的ZIP命令参数: 其中-x参数表示不需要压缩的文件。按tar命令操作经验,我直接如下执行命令: 发现报如下错误: 然后man了一下,找到如下-x参数说明: 按照-x的参数说明 如下继续测试: 还是报同样错误!真是奇怪了! 最终,经多次测试,才知道zip命令压缩文件时正确的排除方法(-r表示包含子目录文件): 比如,要压缩test文件目录及目录下的所有文件,而要排除所有txt格式,执行如下命令即可: 又比如,我现在要压缩网站文件时排除所有缓存文件: 原来,-x参数是用等号来连接需要排除的通配关键词的!网上分享的参数都是那么简单一句【-x : 不需要压缩的文件】,却没人分享具体使用方法!而Linux系统下man命令关于zip的介绍,居然也不对,真是奇怪,难道就没人用过这个参数么? 唉,估计大伙都使用tar --excludes去了。 哦了,本文主要是为了补充一下zip排除文件的正确方法,希望能解决你的燃眉之急。
阅读全文
操作系统

Linux系统crontab备份数据库执行不成功?可能是百分号%在作怪!

之前博客分享过一篇《Linux/vps本地七天循环备份和七牛远程备份脚本》,我自己也一直在用。某天检查备份的时候,突然发现数据库的备份的压缩包是空的! 看了下crontab的日志,发现有如下错误: Access denied for user 'dbuser'@'localhost' to database 'db' when using LOCK TABLES 原来,我在计划任务中备份数据库时,用的是普通用户,在凌晨三点备份的时候,可能碰巧网站正在被访问(比如蜘蛛抓取)。由于存在数据查询,所以mysqldump将默认执行锁表机制。 由于普通用户没有锁表权限,从而导致此次备份失败! 我立马更新了该文章,补充了出现这种情况的解决办法: 解决办法: 方法①、修改上面的备份脚本,找到如下行 添加--skip-lock-tables参数即可,即不锁表导出(可能丢失某些正在更新的数据,当然凌晨时候几率很小)。 方法②、使用root帐号执行备份即可: 执行crontab -e 修改Linux计划任务,修改数据库备份计划命令行中的用户名为mysql的root帐号: 个人推荐方法②,最大限度的保证了数据备份的完整度! 我自己用的就是第②种方法,使用mysql的root帐号来备份,我自以为是的以为应该是万无一失的! 今天再次检查备份的时候发现,数据库仍然没有备份!空的压缩包都不存在了! 可是手动执行crontab里面的数据库备份语句又是可以的,真是诡异!! 于是开始debug,设置断点、使用绝对路径,各种方法用尽了,居然还是不行,不过发现当我将数据库备份代码写到另外一个脚本,然后将这个脚本加入到crontab的时候却可以了???这是为毛? 脚本所用的备份代码是: 于是,我修改backup.sh脚本,将里面的$1~$6都输出到日志中,结果让我发现了问题所在!!! 原来问题出在脚本参数上:我的mysql的root密码中含有一个百分号%,直接将上面的代码写到crontab中,这个百分号却无法传递,所以脚本取得的密码就是错误的!从而,备份失败! 经过查询,发现百分号%是crontab中的一个特殊符号!不能直接作为参数传递!!! 解决办法很简单,使用反斜杠\转义即可:\%,假如我的密码是 123456%,那之前脚本的crontab备份代码应该是: 还是经验不足啊!我也确实没在crontab中使用过百分号字眼,这次算是涨姿势了!
阅读全文
操作系统

硬盘故障时如何强制关机:Input/output error

如果硬盘可能会出现锁死或坏道的故障,会造成SHELL命令的失效,包括 reboot,powoff,,shutdown,用正常的命令是没法完成重启的。 执行这些命令,会出现如下IO报错: 很明显,因为硬盘的故障,内核无法从磁盘上读取二进制程序 /sbin/reboot 和 /sbin/shutdown 来执行,所以命令失败。下次启动时系统自动 fsck 可能会更正磁盘错误,但首先需要使系统重启,拉掉电源这个办法可能会造成硬盘的伤害。 可以让内核直接重启,不需要读取(已经锁死或坏掉的)硬盘,如下: 1、执行: "magic SysRq key"提供了一个通过/proc来直接给内核发送命令的方法。要启用该特性,只需在内核编译的时候启用"CONFIG_MAGIC_SYSRQ"这个选项,而一般发行版的标准内核都已经启用了。 所以,只需执行第一步命令激活这个选项。 2、再执行如下命令 设备将会立即重启。
阅读全文
操作系统

Linux系统最大文件打开数优化,解决Too many open files报错

这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需。 一、报错截图: 图为resin的报错日志,很明显提示了Too many open files:   二、临时解决 临时的解决办法很简单,先执行ulimit -n 65535,然后重启resin即可。 Ps:请注意启动环境是否生效:切换到resin的启动身份,执行 ulimit -n  查看当前的最大文件打开数是否已优化。 三、永久生效 第①种做法:可讲ulimit -n 65535 添加到 /etc/profile 的最后即可; 第②种做法:修改/etc/security/limits.conf文件,在最后添加以下内容即可: 或者直接执行如下代码亦可: 使用第①种,登陆普通账号的时候,会报无权限错误,所以推荐使用第②种方法。 最后啰嗦下,不管使用哪一种方法,修改生效后,需要重启应用才行,否则程序将延续使用旧的环境设置。
阅读全文
操作系统

Linux网络实时流量监测工具iftop的安装使用

概述:网络管理是基础运维中一个很重要的工作,在看似平静的网络运行中,其实暗流汹涌,要保证业务系统稳定运行,网络运维者必须要了解网络的流量状态、各个网段的使用情形,带宽的利用率、网络是否存在瓶颈等,同时,当网络发生故障时,必须能够及时发现问题,迅速定位问题,进而解决问题,这就需要一些网络监测工具的辅助,本节将介绍一款小巧但功能很强大的网络实时流量监测工具iftop。 一、iftop概述 iftop是Linux系统一个免费的网卡实时流量监控工具,类似于top命令。iftop可以监控指定网卡的实时流量、端口连接信息、反向解析IP等,还可以精确显示本机网络流量及网络内各主机和本机相互通信的流量集合,非常适合于监控代理服务器或路由器的网络流量。同时,iftop对检测流量异常的主机非常有效,通过iftop的输出可以迅速定位主机流量异常的根源,这对于网络故障排查、网络安全检测是十分有用的。 二、iftop安装 iftop的官方网站为:http://www.ex-parrot.com/pdw/iftop/, 目前的最新稳定版本为iftop-0.17。安装iftop非常简单,有源码编译安装和yum方式安装两种方式,这里以Centos6.4版本为例,简单介绍如下。 ①、源码编译安装 安装iftop必需的软件库: 前往iftop官网下载最新的源码包,编译安装:  ②、yum在线安装 这样,iftop就安装完成了。 三、iftop使用 安装完iftop工具后,直接输入iftop命令即可显示网卡实时流量信息。在默认情况下,iftop显示系统第一块网卡的流量信息,如果要显示指定网卡信息,可通过“-i”参数实现。 ①、iftop输出界面说明 执行“iftop -P -i em1”命令,得到如下图所示的iftop的一个典型输出界面: iftop的输出从整体上可以分为三大部分: 第一部分。是iftop输出中最上面的一行,此行信息是流量刻度,用于显示网卡带宽流量。 第二部分。是iftop输出中最大的一个部分,此部分又分为左、中、右三列,左列和中列记录了哪些IP或主机正在和本机的网络进行连接。其中,中列的“=>”代表发送数据,“<=”代表接收数据,通过这个指示箭头可以很清晰地知道两个IP之间的通信情况。最右列又分为三小列,这些实时参数分别表示外部IP连接到本机2秒内、10秒内和40秒内的平均流量值。另外,这个部分还有一个流量图形条,流量图形条是对流量大小的动态展示,以第一部分中的流量刻度为基准。通过这个流量图形条可以很方便地看出哪个IP的流量最大,进而迅速定位网络中可能出现的流量问题。 第三部分位于iftop输出的最下面,可以分为三行,其中,“TX”表示发送数据,“RX”表示接收数据,“TOTAL”表示发送和接收全部流量。与这三行对应的有三列,其中“cum”列表示从运行iftop到目前的发送、接收和总数据流量。“peak”列表示发送、接收以及总的流量峰值。“rates”列表示过去2s、10s、40s的平均流量值。 ②、iftop使用参数说明 iftop还有很多附加参数和功能。执行“iftop -h”即可显示iftop可使用的所有参数信息。iftop常用的参数以及含义如下表所示。 ③、iftop的交互操作 在iftop的实时监控界面中,还可以对输出结果进行交互式操作,用于对输出信息进行整理和过滤,在上图所示界面中,按键“h”即可进入交互选项界面,如下图所示: iftop的交互功能和Linux下的top命令非常类似,交互参数主要分为4个部分,分别是一般参数、主机显示参数、端口显示参数和输出排序参数。相关参数的含义如下表所示。 iftop的强大之处在于它能够实时显示网络的流量状态,监控网卡流量的来源IP和目标地址,这对于检测服务器网络故障、流量异常是非常有用的,只需通过一个命令就能把流量异常或网络故障的原因迅速定位,因此对于运维人员来说,iftop命令是必不可少的一个网络故障排查工具。
阅读全文
操作系统

Linux/VPS系统安全设置整理

最近入手了一台创宇云的VPS,然后将2个网站都给搬家了。作为一个运维工程师,终于不用再处处受制于人了,虚拟主机真的只能玩个球! 拿到VPS并快速部署好环境后,开始着手完善一下安全设置,以下过程记录,供大家参考: 一、用户权限安全设置 root权限太高,误操作就相当危险,所以日常操作使用普通账号,只有特定时候才使用su切换到root身份。 ①、新建普通用户,比如zhangge useradd  zhangge ②、修改密码 passwd zhangge ③、将帐号加入wheel组 usermod -G wheel zhangge ④、设置只允许这个组的帐号,使用su命令切换到root vim /etc/pam.d/su 找到#auth            required        pam_wheel.so use_uid 去掉行首的注释符 # 然后使用 :wq 保存退出 接着vim /etc/login.defs 在最末添加SU_WHEEL_ONLY yes,再用:wq保存退出即可。 Ps:执行 echo "SU_WHEEL_ONLY yes">>/etc/login.defs 亦可。 现在,再建立新的普通帐号,是无法使用su命令切换到root组了,感兴趣的可以测试下效果。 ⑤、删除掉不需要的用户和用户组 禁止所有默认的被操作系统本身启动的并且不必要的账号,账号越多,系统就越容易受到攻击。  ⑥、锁定口令文件 执行chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。 二、SSH安全设置 ①、修改SSH端口 默认的SSH使用22端口,众所周知,所以我们有必要自定义只有自己才知道的端口号,而且增加那些恶意扫描端口的难度,建议把SSH端口改到10000以上,比如使用23212,如下修改: Ps:修改前,请执行iptables -nL 确认防火墙未设置非22/80访问限制规则,否则可能导致修改后无法使用自定义端口连接就悲剧了! vim /etc/ssh/sshd_config 编辑SSH配置文件 i. 找到#Port 22,去掉#号,并在下面添加Port 23212(先保留22端口,等23212成功连接再去掉22,保险做法) ii. 继续找到#UseDNS yes,改成UseDNS no,可以提高ssh的连接速度; iii. 找到#PermitRootLogin Yes 改成 PermitRootLogin no 禁止root远程使用ssh登录 iv. 找到#PermitEmptyPasswords no,去掉#号, 禁止空密码登录 最后,使用 :wq 保存退出,再执行 service sshd restart 重启 ssh服务即可生效。 此时,可以新开一个终端,测试能否通过23212端口连线,如果可以就把之前保留的port 22删除即可。   三、防火墙简单安全设定 这个VPS是直接使用公网IP的,防火墙还是得简单设置下。 前期如下规划: 仅作为web服务器使用,所以只需要开放SSH和HTTP端口即可,即只要开放上面定义的23212和80端口,由于不使用ftp,本例未提到21号端口,实际使用请注意辨别。 ①、准备工作 由于操作防火墙具有一定的误操作风险,很可能导致自己也被阻挡在外的悲剧,所以操作防火墙之前事先一定要先建立一个关闭防火墙的计划任务,比如: 执行 crontab -e 加入: 表示每5分钟停止一次防火墙,以防误操作把自己挡在外面,就算出现误操作,5分钟之内将会停止,也不会造成悲剧,这是一个技巧! ②、防火墙设置脚本 以下代码我亲测无误,请放心使用,策略说明: i. 仅开通HTTP(80)和SSH(自动抓取)端口,其他一律拒绝访问!可根据实际需要在第10行添加其他端口,比如FTP的21端口、smtp25端口等。...
阅读全文