位置: 编程技术 - 正文

很实用的Linux 系统运维常用命令及常识(超实用)(有哪些好用的linux)

发布时间:2024-02-27

推荐整理分享很实用的Linux 系统运维常用命令及常识(超实用)(有哪些好用的linux),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:好用的linux操作系统,好用linux系统,好用的linux操作系统,比较好用的linux,好用linux系统,有哪些好用的linux系统,有哪些好用的linux,有哪些好用的linux,内容如对您有帮助,希望把文章链接给更多的朋友!

作为Linux运维,需要了解Linux操作系统的基本使用和管理知识,下面积木网小编给大家介绍下Linux运维需要掌握的命令,想成为Linux运维的朋友可以来学习一下。

很实用的Linux 系统运维常用命令及常识(超实用)(有哪些好用的linux)

1 文件管理2 软件管理3 系统管理4 服务管理5 网络管理6 磁盘管理7 用户管理8 脚本相关9 服务配置==================================

----------------------------------1 文件管理----------------------------------创建空白文件touch不提示删除非空目录rm -rf 目录名(-r:递归删除-f 强制)##################################恢复rm 删除的文件(ext3)查看磁盘分区格式df -T卸载挂载umount /data/ext3grep /dev/sdb1 --ls --inode 2记录信息继续查找目录下文件inode 信息ext3grep /dev/sdb1 --ls --inode # 此处是inode记录下inode 信息开始恢复目录ext3grep /dev/sdb1 --restore-inode ##################################windows 文本转linux 文本dos2unixlinux 文本转windows 文本unix2dos转换编码iconv -f gbk -t utf8 原.txt > 新.txt查看md5 值md5sum硬链接ln符号连接ln -s查看上下翻页且显示行号cat &#; | nl |lessq 退出结束状态ctrl+z查看文件开头内容head查看文件结尾内容tail -f # 监视日志文件检查文件类型file重命名renamerename source_pattern target_pattern source_files更改默认权限umask按数字排序sort -n按数字倒叙sort -nr过滤重复行sort -u删除重复的行uniq重复的行出现次数uniq -c只显示不重复行uniq -u将两个文件合并用tab 键分隔开paste a b将两个文件合并指定'+'符号隔开paste -d'+' a b将多行数据合并到一行用tab 键隔开paste -s a设置隐藏属性chattr [+-=] [ASacdistu] 文件或目录向下分面器more搜索locate 字符串查看行数wc -l实时某个目录下查看最新改动过的文件watch -d -n 1 'df; ls -FlAt /path'快速备份一个文件cp filename{,.bak}##################################配置编辑器gconf-editorvi 配置文件vi /etc/vimrc编辑文件vim打开行号:set nu取消行号:set nonu跳转到G取消高亮:nohl设置自动缩进:set autoindent查看文本格式set ff改为unix 格式set binary向前翻页ctrl+ U向后翻页ctrl+ D全部替换g/字符1/s//字符2/g%s/字符1/字符2/g# 普通用户打开文档不能保存# tee 是一个把stdin 保存到文件的小工具,而%,是vim 当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径:w !sudo tee %##################################按文件名查找find /etc -name http查找某一类型文件find . -type f按照文件权限查找find / -perm按照文件属主查找find / -user按照文件所属的组来查找文件find / -group文件使用时间在N 天以内find / -atime -n文件使用时间在N 天以前find / -atime +n文件内容改变时间在N 天以内find / -mtime -n文件内容改变时间在N 天以前find / -mtime +n文件状态改变时间在N 天前find / -ctime +n文件状态改变时间在N 天内find / -ctime -n# linux 文件无创建时间# Access 使用时间# Modify 内容修改时间# Change 状态改变时间(权限、属主)查找文件长度大于1M 字节的文件find / -size +c -print按名字查找文件传递给-exec 后命令find /etc -name "passwd*" -exec grep "xuesong" {} ;查找文件名,不取路径find . -name 't*' -exec basename {} ;##################################====================================================================----------------------------------2 软件管理----------------------------------解包tartar xvf 1.tar -C 目录打包tartar -cvf 1.tar *查看tartar tvf 1.tar给tar 追加文件tar -rvf 1.tar 文件名解包gztar zxvpf gz.tar.gz打包gztar zcvpf gz.tar.gz查看gztar ztvpf gz.tar.gz解压bzip2bzip2 -dv 1.tar.bz2解压gzip 到targzip -dv 1.tar.gz压缩tar 到gzgzip -v 1.tarbzip2 压缩bzip2 -v 1.tar查看bzip2bzcatrpm 安装rpm -ivh卸载rpm -e lynx强制卸载rpm -e lynx --nodeps测试rpm --test lynx查看所有安装的rpm 包rpm -qa查找包是否安装rpm -qa | grep http解压zipunzip zip.zip压缩zipzip zip.zip *rar3.6 下载地址 包rar a rar.rar *.jpg解压rar 包unrar x rar.rar7z 压缩7z a 7z.7z *7z 解压7z e 7z.7z查看字符行zgrep 字符1.gz打包/home, /etc ,但排除/home/dmtsaitar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc在/home 当中,比// 新的文件才备份tar -N "//" -zcvf home.tar.gz /home下载wgetrc文本上网lynx制作镜像cp -v /dev/dvd /software/rhel4.6.iso清除编译结果make clean源码安装./configure --help |less./configure --prefix=/usr/local/makemake installperl 程序编译perl Makefile.PLmakemake testmake installperl 程序编译python file.py编译c 程序gcc -g hello.c -o hello====================================================================----------------------------------3 系统管理----------------------------------终端锁屏Ctrl+S解锁屏Ctrl+QPS1 环境变量控制提示显示PS1='[u@ H w A @#]$'开机启动模式vi /etc/inittab查找命令的目录whereis查看当前要执行的命令所在的路径which让部命令后台运行命令&将前台放入后台(暂停)ctrl+z查看后台运行程序jobs启动后台暂停进程bg 2调回后台进程fg 2后台运行不受shell 退出影响nohup cmd &清空整个屏幕clear重新初始化屏幕reset查询用过的命令默认 条history清楚记录命令history -ccat /root/.bash_history查看登陆过的用户信息lastlast -n userwho /var/log/wtmp列出登录系统失败的用户相关信息lastb -a/var/log/btmp防火墙日志tail -f /var/log/messagesssh 日志tail -f /var/log/secure随机生成密码mkpasswd-l 位数-C 大小-c 小写-d 数字-s 特殊字符mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0当前在线用户whow查看当前用户名whoami查看登陆用户名logname显示月历cal查看服务器启动时间uptime设日期date -s 设时间date -s ::同步时间/usr/sbin/ntpdate stdtime.gov.hk7 天前日期`date -d "7 days ago" +%Y%m%d`日期格式转换`date +%Y-%m-%d -d ''`日期和时间date +%Y-%m-%d_%X查看时间hwclock账户影子文件/etc/shadow列出所有语系locale -a修改语言LANG=en修改编码vi /etc/sysconfig/inutf-8 <---> GBK强制字符集export LC_ALL=C查询静态主机名vi /etc/hosts最大连接/etc/security/limits.confgrub 开机启动项添加/etc/grub.conftitle ms-dosrootnoverify (hd0,0)chainloader +1别名alias监测命令watch查看Linux 版本信息uname -acat /proc/versioncat /etc/issuelsb_release -a查看cpu 信息more /proc/cpuinfo查看cpu 型号和逻辑核心数cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -ccpu 运行的位数getconf LONG_BIT物理cpu 个数cat /proc/cpuinfo | grep physical | uniq -c结果大于0 支持 位cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l查看cpu 是否支持虚拟化cat /proc/cpuinfo|grep flagspae 支持半虚拟化Intel VT 支持全虚拟化查看内存信息more /proc/meminfo查看全面硬件信息dmidecode查看服务器型号dmidecode | grep "Product Name"查看软raid 信息cat /proc/mdstat查看硬raid 信息cat /proc/scsi/scsi查看硬件信息lspci查看是否支持raidlspci|grep RAID显示开机信息dmesg进程树pstree每隔一秒报告虚拟内存统计信息9 次vmstat 1 9把 号进程的优先级加1renice +1 终止某个PID 进程kill -9 PID指定三天后下午5: 执行/bin/lsat 5pm + 3 days /bin/ls编辑周期任务crontab -e分钟小时天月星期命令或脚本 1-3/2 * * * 命令或脚本直接将命令写入周期任务echo " 7 * * 2 /root/sh">>/var/spool/cron/root查看自动周期性任务crontab -l删除自动周期性任务crontab -r禁止或允许用户使用周期任务cron.deny 和cron.allow启动自动周期性服务service crond 启动|停止|重启|状态>是否打开了某个端口netstat -anlp | grep 端口号查看监听netstat -anlpsudo 命令权限添加visudo用户别名(可用all)=NOPASSWD:命令1,命令2wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restartUserName ALL=(ALL) ALL制作补丁diff suzu.c suzu2.c > sz.patch安装补丁patch suzu.c < sz.patch显示打开指定文件的所有进程lsof 文件查看端口的进程lsof -i :显示消耗内存最多的 个运行中的进程,以内存使用量排序.cpu +3ps aux |grep -v USER | sort -nk +4 | tail查看内核模块lsmodyum 扩展源 -Uvh epel-release-5-4.noarch.rpm升级所有包版本,依赖关系,系统版本内核都升级yum -y update升级指定的软件包yum -y update 软件包名不改变软件设置更新软件,系统版本升级,内核不改变yum -y upgradeyum 搜索相关包yum search mail会改变配置文件,改变旧的依赖关系,改变系统版本dist-upgrade编辑启动项/boot/grub/grub.conf开机启动脚本顺序/etc/profile/etc/profile.d/*.sb~/bash_profile~/.bashrc/etc/bashrc--------------------------------------------------------------------top前五行是系统整体的统计信息。第一行是任务队列信息,同uptime 命令的执行结果。其内容如下::: 当前时间up 1: 系统运行时间,格式为时:分1 user 当前登录用户数load average: 0., 0., 0. 系统负载,即任务队列的平均长度。三个数值分别为1 分钟、5 分钟、 分钟前到现在的平均值。第二、三行为进程和CPU 的信息。当有多个CPU 时,这些内容可能会超过两行。内容如下:Tasks: total 进程总数1 running 正在运行的进程数 sleeping 睡眠的进程数0 stopped 停止的进程数0 zombie 僵尸进程数Cpu(s): 0.3% us 用户空间占用CPU 百分比1.0% sy 内核空间占用CPU 百分比0.0% ni 用户进程空间内改变过优先级的进程占用CPU 百分比.7% id 空闲CPU 百分比0.0% wa 等待输入输出的CPU 时间百分比0.0% hi0.0% si最后两行为内存信息。内容如下:Mem: k total 物理内存总量k used 使用的物理内存总量k free 空闲内存总量k buffers 用作内核缓存的内存量Swap: k total 交换区总量0k used 使用的交换区总量k free 空闲交换区总量k cached 缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。序号列名含义a PID 进程idb PPID 父进程idc RUSER Real user named UID 进程所有者的用户ide USER 进程所有者的用户名f GROUP 进程所有者的组名g TTY 启动进程的终端名。不是从终端启动的进程则显示为&#;h PR 优先级i NI nice 值。负值表示高优先级,正值表示低优先级j P 最后使用的CPU,仅在多CPU 环境下有意义k %CPU 上次更新到现在的CPU 时间占用百分比l TIME 进程使用的CPU 时间总计,单位秒m TIME+ 进程使用的CPU 时间总计,单位1/ 秒n %MEM 进程使用的物理内存百分比o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESp SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATAr CODE 可执行代码占用的物理内存大小,单位kbs DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbt SHR 共享内存大小,单位kbu nFLT 页面错误次数v nDRT 最后一次写入到现在,被修改过的页面数。w S 进程状态。D=不可中断的睡眠状态R=运行S=睡眠T=跟踪/停止Z=僵尸进程x COMMAND 命令名/命令行y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名z Flags 任务标志,参考sched.h##################################iptables内建三个表:nat mangle 和filterfilter 预设规则表,有INPUT、FORWARD 和OUTPUT 三个规则链INPUT 进入FORWARD 转发OUTPUT 出去ACCEPT 将封包放行REJECT 拦阻该封包DROP 丢弃封包不予处理-A 在所选择的链(INPUT 等)末添加一条或更多规则-D 删除一条-E 修改-p tcp、udp、icmp 0 相当于所有all !取反-P 设置缺省策略(与所有链都不匹配强制使用此策略)-s IP/掩码(IP/) 主机名、网络名和清楚的IP 地址!取反-j 目标跳转,立即决定包的命运的专用内建目标-i 进入的(网络)接口[名称] eth0-o 输出接口[名称]-m 模块--sport 源端口--dport 目标端口#配置文件vi /etc/sysconfig/iptables#将防火墙中的规则条目清除掉iptables -F#注意:iptables -P INPUT ACCEPT#导入防火墙规则iptables-restore <规则文件#保存防火墙设置/etc/init.d/iptables save#重启防火墙服务/etc/init.d/iptables restart#查看规则iptables -L -niptables -L -n --line-numbers#从某个规则链中删除一条规则iptables -D INPUT --dport -j DROPiptables -D INPUT 8#取代现行规则iptables -R INPUT 8 -s ..0.1 -j DROP#插入一条规则iptables -I INPUT 8 --dport -j ACCEPT#查看转发iptables -t nat -nL#在内核里打开ip 转发功能echo 1 > /proc/sys/net/ipv4/ip_forward###################################允许本地回环iptables -A INPUT -s .0.0.1 -p tcp -j ACCEPT#允许已建立的或相关连的通行iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#开放对外访问iptables -P OUTPUT ACCEPT#指定某端口针对IP 开放iptables -A INPUT -s ... -p tcp --dport -j ACCEPT#允许的IP 或IP 段访问iptables -A INPUT -s ... -p tcp -j ACCEPT#开放对外开放端口iptables -A INPUT -p tcp --dport -j ACCEPT#关闭入口iptables -P INPUT DROP#关闭转发iptables -P FORWARD DROP##################################iptables 规则文件# Generated by iptables-save v1.2. on Fri Feb 9 :: *filter:INPUT DROP [:]:FORWARD DROP [0:0]:OUTPUT ACCEPT [:]#允许的IP 或IP 段访问-A INPUT -s .0.0.1 -p tcp -j ACCEPT-A INPUT -s ..0.0/..0.0 -p tcp -j ACCEPT#开放对外开放端口-A INPUT -p tcp --dport -j ACCEPT#指定某端口针对IP 开放-A INPUT -s ... -p tcp --dport -j ACCEPT#拒绝所有协议(INPUT 允许的情况)#-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP# 允许已建立的或相关连的通行iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#拒绝ping-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachableCOMMIT# Completed on Fri Feb 9 :: ##################################常用实例#允许在IP 访问指定端口iptables -A INPUT -s ...1 -p tcp --dport -j ACCEPT#禁止使用某端口iptables -A INPUT -p tcp --dport -j DROPiptables -A INPUT -p tcp --dport -j REJECT#禁止QQ 端口iptables -D FORWARD -p udp --dport -j REJECT#禁止icmp 端口#除...1 外,禁止其它人ping 我的主机iptables -A INPUT -i eth0 -s ...1/ -p icmp -m icmp --icmp-type 8 -j ACCEPTiptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP#其它情况不允许iptables -A INPUT -i eth0 -j DROP#禁止指定IP 访问iptables -A INPUT -p tcp -s IP -j DROP#禁止指定IP 访问端口iptables -A INPUT -p tcp -s IP --dport port -j DROP#阻止所有没有经过你系统授权的TCP 连接iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP#添加网段转发iptables -t nat -A POSTROUTING -s .8.0.0/ -j MASQUERADE#IP 包流量限制iptables -A INPUT -f -m limit --limit /s --limit-burst -j ACCEPTiptables -A INPUT -i eth0 -p icmp -j DROP#端口映射iptables -t nat -A PREROUTING -i eth0 -p tcp -s ...0/ --dport -j REDIRECT --to-ports#列出某规则链中的所有规则iptables -L INPUT#删除某个规则链,不加规则链,清除所有非内建的iptables -X allowed#将封包计数器归零iptables -Z INPUT#定义新的规则链iptables -N allowed#定义过滤政策iptables -P INPUT DROP#修改某自订规则链的名称iptables -E allowed disallowed#比对通讯协议类型是否相符#-p ! tcp 排除tcp 以外的udp、icmp。-p all 所有类型iptables -A INPUT -p tcp#比对封包的来源IP#..0.0/ ! 反向对比iptables -A INPUT -s ..1.1#比对封包的目的地IPiptables -A INPUT -d ..1.1#比对封包是从哪片网卡进入#eth+表示所有的网卡iptables -A INPUT -i eth0#比对封包要从哪片网卡送出iptables -A FORWARD -o eth0#比对某段时间内封包的平均流量#例子是用来比对:每小时平均流量是否超过一次3 个封包。除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、/minute、/day。除了进行封数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。iptables -A INPUT -m limit --limit 3/hour#比对瞬间大量封包的数量#例子是用来比对一次同时涌入的封包是否超过5 个(这是默认值),超过此上限的封包将被直接丢弃。使用效果同上。iptables -A INPUT -m limit --limit-burst 5#比对来自本机的封包#是否为某特定使用者所产生的,这样可以避免服务器使用root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。iptables -A OUTPUT -m owner --uid-owner #比对来自本机的封包iptables -A OUTPUT -m owner --gid-owner 0iptables -A OUTPUT -m owner --pid-owner iptables -A OUTPUT -m owner --sid-owner #用来比对联机状态iptables -A INPUT -m state --state RELATED,ESTABLISHED联机状态共有四种:INVALID、ESTABLISHED、NEW 和RELATED。#-j 参数指定进行的处理动作,处理动作包括: ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,说明:iptables -A FORWARD -p TCP --dport -j REJECT --reject-with tcp-reset#可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是tcp-resetREDIRECT 将封包重新导向到另一个端口(PNAT)iptables -t nat -A PREROUTING -p tcp --dport -j REDIRECT --to-ports MASQUERADE 改写封包来源IP 为防火墙NIC IPiptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports -LOG 将封包相关讯息纪录在/var/log 中iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"SNAT 改写封包来源IP 为某特定IP 或IP 范围iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source...-...:-DNAT 改写封包目的地IP 为某特定IP 或IP 范围iptables -t nat -A PREROUTING -p tcp -d ... --dport -j DNAT --to-destination..1.1-..1.:-MIRROR 镜射封包QUEUE 中断过滤程序RETURN 结束在目前规则炼中的过滤程序MARK 将封包标上某个代号##################################iptables 配置实例允许某段IP 访问任何端口iptables -A INPUT -s ..0.3/ -p tcp -j ACCEPT设定预设规则(拒绝所有的数据包,再允许需要的,如只做WEB 服务器.还是推荐三个链都是DROP)iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT(注:意直接设置这三条完已经掉线了)开启 端口iptables -A INPUT -p tcp --dport -j ACCEPT如果OUTPUT 设置成DROP 的,要写上下面一条iptables -A OUTPUT -p tcp --sport -j ACCEPT(注:,不写导致无法SSH.其他的端口一样,OUTPUT 设置成DROP 的话,也要添加一条链)如果开启了web 服务器,OUTPUT 设置成DROP 的话,同样也要添加一条链iptables -A OUTPUT -p tcp --sport -j ACCEPT做WEB 服务器,开启 端口,其他同理iptables -A INPUT -p tcp --dport -j ACCEPT做邮件服务器,开启, 端口iptables -A INPUT -p tcp --dport -j ACCEPTiptables -A INPUT -p tcp --dport -j ACCEPT允许icmp 包通过,允许pingiptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT 设置成DROP 的话)iptables -A INPUT -p icmp -j ACCEPT (INPUT 设置成DROP 的话)允许loopback!(不然会导致DNS 无法正常关闭等问题)IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)====================================================================----------------------------------4 服务管理----------------------------------启动sendmail 服务./sendmail start/etc/init.d/sendmail start关闭sendmail 服务./sendmail stop查看sendmail 服务当前状态./sendmail status发送邮件echo 内容| /bin/mail -s "标题" 收件箱打开服务列表需要打*ntsysv让某个服务不自动启动 指的是运行级别httpd:chkconfig --level httpd off让某个服务自动启动httpd:chkconfig --level httpd on查看所有服务的启动状态chkconfig --list查看某个服务的启动状态chkconfig --list |grep httpd查看服务的状态chkconfig ?-list [服务名称]设置非独立服务启状态chkconfig 服务名on|off|set开启mysql 后台运行/usr/local/mysql/bin/mysqld_safe --user=mysql &开机启动执行vi /etc/rc.d/rc.local开机启动和关机关闭服务连接/etc/rc.d/rc3.d/Ssshd# S 开机start K 关机stop 级别后跟服务名ln -s -f /usr/local/httpd/bin/apachectl /etc/rc.d/rc3.d/Shttpd====================================================================----------------------------------5 网络管理----------------------------------##################################本机网络配置文件vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=noneBROADCAST=..1.HWADDR=:0C::3F:E1:EAIPADDR=..1.NETMASK=...0NETWORK=..1.0ONBOOT=yesTYPE=EthernetGATEWAY=..1.1##################################增加逻辑IP 地址ifconfig eth0:0 ..1. netmask ...0查看路由表route添加路由表route add default gw ..1.1 dev eth0设置DNSvi /etc/resolv.conf禁用网卡ifconfig eth0 down启用网卡ifconfig eth0 upifup eth0:0 up测试跳数traceroute www.baidu.com (linux)tracert www.baidu.com (windows)根据IP 和主机最大数计算掩码ipcalc -m "$ip" -p "$num"用wget 的递归方式下载整个网站wget --random-wait -r -p -e robots=off -U Mozilla www.example.com通过DNS 来读取Wikipedia 的hacker 词条dig +short txt hacker.wp.dg.cxhost -t txt hacker.wp.dg.cxrz ssh 小文件上传sz ssh 小文件下载从linux ssh 登录另一台linuxssh -p wang@..1.利用ssh 操作远程主机ssh -p root@..1. 环境变量中脚本把本地文件拷贝到远程主机scp -P 文件root@ip:/目录ssh 连接不提示yesssh -o StrictHostKeyChecking=no ...把远程指定文件拷贝到本地scp root@..1.:远程目录本地目录通过SSH 挂载远程主机上的文件夹sshfs name@server:/path/to/folder /path/to/mount/point卸载的话使用fusermount 命令fusermount -u /path/to/mount/point用DIFF 对比远程文件跟本地文件ssh user@host cat /path/to/remotefile | diff /path/to/localfile -用SSH 创建端口转发通道ssh -N -L:remotehost: user@somemachine嵌套使用SSHssh -t host_A ssh host_B密钥信任ssh-keygen ?t rsavi 用户/.ssh/authorized_keys远程关掉一台WINDOWS 机器net rpc shutdown -I IP_ADDRESS -U username%password禁pingecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all##################################先ping 在扫描主机开放端口nmap -PT ..1.1-扫描出系统内核版本nmap -O ..1.1扫描端口的软件版本nmap -sV ..1.1-半开扫描(通常不会记录日志)nmap -sS ..1.1-不支持windows 的扫描(判断是否是windows)nmap -sF ..1.1-nmap -sX ..1.1-nmap -sN ..1.1-不ping 直接扫描nmap -P0 ..1.1-详细信息nmap -d ..1.1-无法找出真正扫描主机(隐藏IP)nmap -D ..1.1-端口范围nmap -p -,,-表示:扫描 到 号端口, 号端口以及所有大于 的端口组合扫描(不ping、软件版本、内核版本、详细信息)nmap -P0 -sV -O -v ...##################################====================================================================----------------------------------6 磁盘管理----------------------------------查看硬盘容量df -h查看磁盘分区格式df -T修改只读文件系统为读写mount -o remount,rw /查看卷标e2label /dev/sda5创建卷标e2label /dev/sda5 new-labelNTFS 添加卷标ntfslabel -v /dev/sda8 new-labelext2 分区转ext3 分区tune2fs -j /dev/sda格式化分区mkfs -t ext3 /dev/hda3指定索引块大小mke2fs -b /dev/sda5对文件系统修复fsck -y /dev/sda6查看超级块的信息dumpe2fs -h /dev/sda5查看当前系统支持文件系统cat /proc/filesystems检测硬盘状态smartctl -H /dev/sda检测硬盘信息smartctl -i /dev/sda检测所有信息smartctl -a /dev/sda检测目录下所有文件大小du -h 目录显示当前目录中子目录的大小du -h --max-depth=1挂载光驱mount -t iso /dev/dvd /mnt挂载镜像文件mount -o loop /software/rhel4.6.iso /mnt/##################################磁盘grub 开机引导项添加/etc/grub.conftitle ms-dosrootnoverify (hd0,0)chainloader +1##################################建立软RAID1两块硬盘分区一样,分别新建分区文件类型为software RAID创建两个就点击raid 合并为RAID1,这里的挂载点为正常linux 目录查看raid 工作状态cat /proc/mdstat两个盘都加grub 引导查看cat /boot/grub/grub.confgrubroot (hd0,0)setup (hd0)root (hd1,0)setup (hd1)修改grub 启动项配置文件vi /boot/grub/grub.conf复制title CentOS 到最后的四行在下面粘贴修改为刚才新加的引导(hd1,0)。查看分区sfdisk -d /dev/hda导出A 盘分区列表sfdisk -d /dev/hda > fq.hda将分区列表导入到新加的硬盘sfdisk /dev/hdb < fq.hda恢复新挂载的硬盘分区mdadm /dev/md1 -a /dev/hdb5# raid5 可利用lvm 扩容##################################新硬盘挂载fdisk /dev/sdcp # 打印分区d # 删除分区n # 创建分区,(一块硬盘最多4 个主分区,扩展占一个主分区位置。p 主分区e 扩展)w # 保存退出mkfs -t ext3 -L 卷标/dev/sdc1 # 格式化相应分区mount /dev/sdc1 /mnt # 挂载添加开机挂载分区vi /etc/fstab用卷标挂载LABEL=/data /data ext3 defaults 1 2用真实分区挂载/dev/sdb1 /data4 ext3 defaults 1 2第一个数字"1"该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0第二个数字"2"该字段被fsck 命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0##################################====================================================================----------------------------------7 用户管理----------------------------------建立用户useradd xuesong修改密码passwd 用户echo "xuesong" | passwd xuesong --stdin查找用户显示信息finger添加组groupadd修改文件拥有者(R 递归)chown -R修改所有者用户中包含点"."chown y.li:mysql修改用户组chgrp修改用户名usermod -l 新用户名老用户名修改用户所属组usermod -g user group修改用户家目录usermod -d 目录-m 用户将用户添加到附加组usermod -G user group删除帐号及家目录userdel -r指定组并不允许登录的用户useradd -g www -M -s /sbin/nologin www切换用户执行su - user -c "#命令1"====================================================================----------------------------------8 脚本相关----------------------------------##################################正则表达式^ 行首定位$ 行为定位. 匹配除换行符以外的任意字符* 匹配0 或多个重复字符+ 重复一次或更多次&#; 重复零次或一次[] 匹配一组中任意一个字符[^] 匹配不在指定组内的字符 用来转义元字符< 词首定位符(支持vi 和grep)<love> 词尾定位符(支持vi 和grep)love>x{m} 重复出现m 次x{m,} 重复出现至少m 次x{m,n} 重复出现至少m 次不超过n 次X&#; 匹配出现零次或一次的大写字母XX+ 匹配一个或多个字母X(abc|def)+ 匹配一连串的(最少一个) abc 或def;abc 和def 将匹配d 匹配任意一位数字D 匹配任意单个非数字字符w 匹配任意单个字母数字字符,同义词是[:alnum:]s 匹配任意的空白符b 匹配单词的开始或结束[:alpha:] 代表所有字母不论大小写[:lower:] 表示小写字母[:upper:] 表示大写字母[:digit:] 表示数字字符() 括号内的字符为一组##################################基本流程结构if [ $a == $b ]thenecho "等于"elseecho "不等于"fi##################################case $xs in0) echo "0" ;;1) echo "1" ;;*) echo "其他" ;;esac##################################num=1# while true 等同while :while [ $num -lt ]doecho $num((num=$num+2))done##################################grep a a.txt | while read adoecho $adone##################################w=`awk -F ":" '{print $1}' c`for d in $wdo$ddone##################################for ((i=0;i<${#o[*]};i++))doecho ${o[$i]}done##################################until 循环# 当command 不为0 时until commanddobodydone##################################流程控制break N # 跳出几层循环continue N # 跳出几层循环,循环次数不变continue # 重新循环次数不变##################################变量将变量A 赋值为字串A="a b c def"A=`命令`间接调用eval a=$$a将变量A 定义为?数A=(a b c def)set a1 a2 a3 a4$1 $2 $*在子shell 中运行(a=bbk)定义变量类型declare 或者typeset-r 只读(readonly 一样)-i 整形-a 数组-f 函数-x exportdeclare -i n=0env # 查看环境变量env | grep "name" # 查看定义的环境变量set # 查看环境变量和本地变量read name # 输入变量readonly name # 把name 这个变量设置为只读变量,不允许再次设置readonly # 查看系统存在的只读文件export name # 变量name 由本地升为环境export name="RedHat" # 直接定义name 为环境变量export Stat$nu= # 变量引用变量赋值unset name # 变量清除export -n name # 去掉只读变量shift # 用于移动位置变量,调整位置变量,使$3 的值赋给$2.$2 的值赋予$1name + 0 # 将字符串转换为数字number " " # 将数字转换成字符串常用系统变量$0 # 脚本启动名(包括路径)basename $0 # 只取脚本名$n # 当前程式的第n 个参数,n=1,2,…9$* # 当前程式的所有参数(不包括脚本本身)$# # 当前程式的参数个数(不包括脚本本身)$$ # 当前程式的PID$! # 执行上一个指令的PID$&#; # 执行上一个指令的返回值变量引用技巧${}${name:+value} # 如果设置了name,就把value 显示,未设置则为空${name:-value} # 如果设置了name,就显示它,未设置就显示value${name:&#;value} # 未设置提示用户错误信息value${name:=value} # 如未设置就把value 设置并显示<写入本地中>,${#A} # 可得到变量中字节${#A[*]} # 数组个数${A[2]} # 脚本的一个参数${A:4:9} # 取变量中第4 位到后面9 位${A/www/http} # 取变量并且替换每行第一个关键字${A//www/http} # 取变量并且全部替换每行关键字定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt${file#*/} # 去掉第一条/ 及其左边的字串:dir1/dir2/dir3/my.file.txt${file##*/} # 去掉最后一条/ 及其左边的字串:my.file.txt${file#*.} # 去掉第一个. 及其左边的字串:file.txt${file##*.} # 去掉最后一个. 及其左边的字串:txt${file%/*} # 去掉最后条/ 及其右边的字串:/dir1/dir2/dir3${file%%/*} # 去掉第一条/ 及其右边的字串:(空值)${file%.*} # 去掉最后一个. 及其右边的字串:/dir1/dir2/dir3/my.file${file%%.*} # 去掉第一个. 及其右边的字串:/dir1/dir2/dir3/my# # 是去掉左边(在键盘上# 在$ 之左边)# % 是去掉右边(在键盘上% 在$ 之右边)# 单一符号是最小匹配?两个符号是最大匹配##################################test 条件判断# 符号[ ] 等同testexpression 为字符串操作-n str # 字符串str 是否不为空-z str # 字符串str 是否为空expression 为文件操作-b # 是否块文件-p # 文件是否为一个命名管道-c # 是否字符文件-r # 文件是否可读-d # 是否一个目录-s # 文件的长度是否不为零-e # 文件是否存在-S # 是否为套接字文件-f # 是否普通文件-x # 文件是否可执行,则为真-g # 是否设置了文件的SGID 位-u # 是否设置了文件的SUID 位-G # 文件是否存在且归该组所有-w # 文件是否可写,则为真-k # 文件是否设置了的粘贴位-t fd # fd 是否是个和终端相连的打开的文件描述符(fd 默认为1)-O # 文件是否存在且归该用户所有! # 取反expression 为整数操作expr1 -a expr2 # 如果expr1 和expr2 评估为真,则为真expr1 -o expr2 # 如果expr1 或expr2 评估为真,则为真两值比较整数字符串-lt <: # 小于-gt >: # 大于-le <=: # 小于或等于-ge >=: # 大于或等于-eq ==: # 等不等-ne !=: # 不等于判断大小,0 为真,1 为假test -lt 5echo $&#;1判断字符串长度是否为0test -n "hello"0##################################重定向# 标准输出stdout 和标准错误stderr 标准输入stdincmd 1> fiel # 把标准输出重定向到file 文件中cmd > file 2>&1 # 把标准输出和标准错误一起重定向到file 文件中cmd 2> file # 把标准错误重定向到file 文件中cmd 2>> file # 把标准错误重定向到file 文件中(追加)cmd >> file 2>&1 # 把标准输出和标准错误一起重定向到file 文件中(追加)cmd < file >file2 # cmd 命令以file 文件作为stdin(标准输入),以file2 文件作为标准输出cat <>file # 以读写的方式打开filecmd < file cmd # 命令以file 文件作为stdincmd << delimitercmd; #从stdin 中读入,直至遇到delimiter 分界符。delimiter>&n # 使用系统调用dup (2) 复制文件描述符n 并把结果用作标准输出<&n # 标准输入复制自文件描述符n<&- # 关闭标准输入(键盘)>&- # 关闭标准输出n<&- # 表示将n 号输入关闭n>&- # 表示将n 号输出关闭##################################运算符$[]等同于$(()) # $[]表示形式告诉shell 求中括号中的表达式的值~var # 按位取反运算符,把var 中所有的二进制为1 的变为0,为0 的变为1var<<str # 左移运算符,把var 中的二进制位向左移动str 位,忽略最左端移出的各位,最右端的各位上补上0 值,每做一次按位左移就有var 乘2var>>str # 右移运算符,把var 中所有的二进制位向右移动str 位,忽略最右移出的各位,最左的各位上补0,每次做一次右移就有实现var 除以2var&str # 与比较运算符,var 和str 对应位,对于每个二进制来说,如果二都为1,结果为1.否则为0var^str # 异或运算符,比较var 和str 对应位,对于二进制来说如果二者互补,结果为1,否则为0var|str # 或运算符,比较var 和str 的对应位,对于每个二进制来说,如二都该位有一个1或都是1,结果为1,否则为0运算符的优先级级别运算符说明1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>== # 赋值运算符2 || # 逻辑或前面不成功执行3 && # 逻辑与前面成功后执行4 | # 按位或5 ^ # 按异位与6 & # 按位与7 ==,!= # 等于/不等于8 <=,>=,<,> # 大于或等于/小于或等于/大于/小于9 <<,>> # 按位左移/按位右移(无转意符号) +,- # 加减 *,/,% # 乘,除,取余 ! ,~ # 逻辑非,按位取反或补码 -,+ # 正负##################################数学运算$(( )) 整数运算符号大致有这些:+ - * / **:分?e为"加、?p、乘、除、密运算"& | ^ !:分?e为"AND、OR、XOR、NOT" 运算% :余数运算运算letlet x=/4let x=5**5手工命令行计数器exprSUM=`expr 2 * 3`计算字串长度expr length "bkeep zbb"抓取字串expr substr "bkeep zbb" 4 9抓取第一个字符数字串出现的位置expr index "bkeep zbb" e整数运算expr % 9expr / 3 / 2 # 运算符号有空格增量计数(加循环即可)LOOP=0LOOP=`expr $LOOP + 1`数值测试(如果试图计算非整数,则会返回错误。)rr=3.4expr $rr + 1expr: non-numeric argumentrr=5expr $rr + 模式匹配(可以使用expr 通过指定冒号选项计算字符串中字符数).* 意即任何字符重复0 次或多次expr bkeep.doc : '.*'在expr 中可以使用字符串匹配操作,这里使用模式抽取.doc 文件附属名。expr bkeep.doc : '(.*).doc'次方计算echo "m^n"|bc##################################grep 用法-c 显示匹配到得行的数目,不显示内容-h 不显示文件名-i 忽略大小写-l 只列出匹配行所在文件的文件名-n 在每一行中加上相对行号-s 无声操作只显示报错,检查退出状态-v 反向查找-e 使用正则表达式-A1 打印匹配行和下一行-wc 匹配出现次数grep 可用于if 判断,找到$&#;为then过滤关键字符行grep -v "a" txt精确匹配字符串grep 'a>' txt大小写敏感grep -i "a" txt同时匹配大小写grep "a[bB]" txt查找0-9 重复三次的所在行grep '[0-9]{3}' txt任意条件匹配grep -E "word1 | word2 | word3" file同时匹配三个grep word1 file | grep word2 |grep word3##################################tr 用法-c 用字符串1 中字符集的补集替换此字符集,要求字符集为ASCII。-d 删除字符串1 中所有输入字符。-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。[a-z] a-z 内的字符组成的字符串。[A-Z] A-Z 内的字符组成的字符串。[0-9] 数字串。octal 一个三位的八进制数,对应有效的ASCII 字符。[O*n] 表示字符O 重复出现指定次数n。因此[O*2]匹配OO 的字符串。tr 中特定控制字符的不同表达方式速记符含义八进制方式a Ctrl-G 铃声b Ctrl-H 退格符f Ctrl-L 走行换页n Ctrl-J 新行r Ctrl-M 回车t Ctrl-I tab 键v Ctrl-X 将所有大写转换成小写字母tr A-Z a-z将空格替换为换行tr " " "n"删除空行tr -s "[]" < plan.txttr -s ["n"] < plan.txt删除文件中的^M,并代之以换行tr -s "[]" "[n]" < filetr -s "[r]" "[n]" < file替换passwd 文件中所有冒号,代之以tab 键tr -s "[:]" "[]" < /etc/passwdtr -s "[:]" "[t]" < /etc/passwd增加显示路径可读性echo $PATH | tr ":" "n"tr 在vi 内使用,在tr 前加处理行范围和感叹号('$'表示最后一行)1,$!tr -d 't'Mac -> UNIXtr "r" "n"<macfile > unixfileUNIX -> Mactr "n" "r"<unixfile > macfileDOS -> UNIXMicrosoft DOS/Windows 约定,文本的每行以回车字符(r)并后跟换行符(n)结束tr -d "r"<dosfile > unixfileUNIX -> DOS:在这种情况下,需要用awk,因为tr 不能插入两个字符来替换一个字符awk '{ print $0"r" }'<unixfile > dosfile##################################awk 用法b 退格f 换页n 换行r 回车t 制表符Tabc 代表任一其他字符-F 改变FS 值(分隔符)~ 匹配= 赋值== 匹配+= 叠加[:alnum:] 字母数字字符[:alpha:] 字母字符[:cntrl:] 控制字符[:digit:] 数字字符[:graph:] 非空白字符(非空格、控制字符等)[:lower:] 小写字母[:print:] 与[:graph:]相似,但是包含空格字符[:punct:] 标点字符[:space:] 所有的空白字符(换行符、空格、制表符)[:upper:] 大写字母[:xdigit:] 十六进制的数字(0-9a-fA-F)内建变量$n 当前记录的第n 个字段,字段间由FS 分隔$0 完整的输入记录ARGC 命令行参数的数目ARGIND 命令行中当前文件的位置( 从0 开始算)ARGV 包含命令行参数的数组CONVFMT 数字转换格式( 默认值为%.6g)ENVIRON 环境变量关联数组ERRNO 最后一个系统错误的描述FIELDWIDTHS 字段宽度列表( 用空格键分隔)FILENAME 当前文件名FNR 同NR ,但相对于当前文件FS 字段分隔符( 默认是任何空格)IGNORECASE 如果为真(即非0 值),则进行忽略大小写的匹配NF 当前记录中的字段数(列)NR 当前行数OFMT 数字的输出格式( 默认值是%.6g)OFS 输出字段分隔符( 默认值是一个空格)ORS 输出记录分隔符( 默认值是一个换行符)RLENGTH 由match 函数所匹配的字符串的长度RS 记录分隔符( 默认是一个换行符)RSTART 由match 函数所匹配的字符串的第一个位置SUBSEP 数组下标分隔符( 默认值是/) 。BEGIN 先处理(可不加文件参数)END 结束时处理[[:digit:][:lower:]] 数字和小写字母(占一个字符)-F"[ ]+|[%]+" 已多个空格或多个%为分隔符[a-z]+ 多个小写字母[a-Z] 代表所有大小写字母(aAbB...zZ)[a-z] 代表所有大小写字母(ab...z)打印匹配到得行awk '/Tom/' 文件如果第三个字段值小于 才打印awk '$3 <' 文件匹配Tom 开头的行打印第一个字段awk '/^Tom/{print $1}'显示所有第一个字段不是以ly 结尾的行awk '$1 !~ /ly$/' 文件条件判断(如果$1 大于$2,max 值为为$1,否则为$2)awk '{max=($1 > $2) &#; $1 : $2; print max}' 文件awk '{print ($1>$2)&#;"第一排"$1:"第二排"$2}' e.txt(括号代表if 语句判断"&#;"代表then ":"代表else)算术运算(第三个字段和第四个字段乘积大于 则显示)awk '$3 * $4 > ' 文件打印tom 到suz 之间的行awk '/tom/,/suz/' 文件去掉前三行awk '{$1="";$2="";$3="";print}' a.sh将date 值赋给d,并将d 设置为数组mon,打印mon 数组中第2 个元素awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' 文件以空格、:、制表符Tab 为分隔符awk -F'[ :t]' '{print $1,$2}'取关键字下第几行awk '/关键字/{a=NR+2}a==NR {print}'awk 中引用变量a=aa &&echo ::|awk -F":" '{print $1,"'"$a"'",$2,$3}'指定类型(%d 数字,%s 字符)/sbin/ifconfig |awk '{printf("line %d,%sn",NR,$0)}'awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' 文件awk 加if 判断awk '{if ( $6 > ) print $1 " Too high" ;else print "Range is OK"}' fileawk '{if ( $6 > ) { count++;print $3 } else { x+5; print $2 } }' fileawk 加循环awk '{i = 1; while ( i <= NF ) { print NF, $i ; i++ } }' fileawk '{ for ( i = 1; i <= NF; i++ ) print NF,$i }' file提取时间,空格不固定ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}'查看磁盘空间df|awk -F"[ ]+|%" '$5>{print $5}'取出第四列等于 的第五列awk '$4=={print $5}'打印所有以模式no 或so 开头的行awk '/^(no|so)/' test排列打印awk 'END{printf"%-s%-sn%-s%-sn%-s%-sn","server","name","","","",""}' txtawk 'BEGIN{printf"|%-s|%-s|n|%-s|%-s|n|%-s|%-s|n","server","name","","","",""}'awk 'BEGIN{print " *** 开始*** ";print "+-----------------+";printf "|%-5s|%-5s|%-5s|n","id","name","ip";}$1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|n",$1,$2,$3" "$}END{print "+-----------------+";print " *** 结束*** "}' txtawk 中计算(求余数)echo list|awk '{ i=($1%);if ( $i >= 0 ) {print $0,$i}}'sub 匹配第一次出现的符合模式的字符串,相当于sed 's//'awk '{sub(/Mac/,"Macintosh");print}' urfile#用Macintosh 替换Macgsub 匹配所有的符合模式的字符串,相当于sed 's//g'awk '{sub(/Mac/,"MacIntosh",$1); print}' file#第一个域内用Macintosh 替换Mac处理sql 语句cat 1.txt|awk -F" # " '{print "insert into user(user,password,email)values(""'''"$1"'','""'''"$2"'','""'''"$3"'');'"}' >>insert_1.txt引用外部变量awk '{print "'"$a"'","'"$b"'"}'在END 块里面把数组内容写到文件awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' data >tmp将$1 的值叠加后赋给sumawk 'sum+=$1{print sum}' <<EOF1 EOF加入END 只打印最后的结果awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF: 4.e+ 1.e+: 3.e+ 1.e+: 5.e+ 1.e+EOF#结果中第一个值是$2 的总和第二个值是$3 的总和第三个值是$2 总和除个数(平均值) 第四个值是$3 总和除个数(平均值)#e+ 是科学计数法,表示乘以 的6 次方awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF1: 3 : 6 : 9 EOF列求和cat txt |awk '{a+=$1}END{print a}'列求平均值cat txt |awk '{a+=$1}END{print a/NR}'列求最大值cat txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'#设定一个变量开始为0,遇到比该数大的值,就赋值给该变量,直到结束求最小值cat txt |awk 'BEGIN{a=}{if ($1<a) a=$1 fi}END{print a}'判断$1 是否整除(awk 中定义变量引用时不能带$ )cat txt |awk '{ i=$1%;if ( i == 0 ) {print i}}'##################################sed 用法-n 输出由编辑指令控制(取消默认的输出,必须与编辑指令一起配合)-i 直接对文件操作-e 多重编辑p 打印d 删除s 替换g 配合s 全部替换i 行前插入a 行后插入r 读y 转换q 退出(..) 保存..作为标签1(1)& 代表查找的串内容* 前导符.* 匹配任意多个字符模式空间(两行两行处理)N 将第二行追加到第一行将换行符n 替换空极为一行n 将第二行覆盖到第一行h 把模式空间里的行拷贝到暂存空间H 把模式空间里的行追加到暂存空间g 用暂存空间的内容替换模式空间的行G 把暂存空间的内容追加到模式空间的行后x 将暂存空间的内容于模式空间里的当前行互换! 对所选行以外的所有行应用命令。注意:暂存空间里默认存储一个空行。sed 命令替换并打印出替换行( -i 改变文本)sed -n -e "{s/文本(正则表达式)/替换的文本/p}"打印并删除正则表达式的那部分内容sed -n -e "{s/^ *[0-9]*//p}"删除含关键的一行sed -i "/^$f/d" a直接对文本替换sed -i "s/=/:/" c找到pearls 开头在行尾加jcuised -i "/^pearls/s/$/jcui/" ab.txt标签(保存(mar)作为标签1)sed -n 's/(mar)got/1ianne/p' 文件echo "margot"|sed -n 's/(mar).*(t)//p'sed -e 's/^([a-zA-Z]+) ([a-zA-Z]+)(.*)/2 /g' file在以[0-9][0-9]结尾的行后加5sed 's/[0-9][0-9]$/&5' 文件打印从第5 行到以no 开头行之间的所有行sed -n '5,/^no/p' 文件修改west 和east 之间的所有行,在结尾处加*VACA*sed '/west/,/east/s/$/*VACA*/' 文件多重编辑(先删除1-3 行,在将1 替换成2)sed -e '1,3d' -e 's/1/2/' 文件找到含suan 的行,在后面加上读入的文件内容sed '/suan/r 读入文件' 文件找到含no 的行,写入到指定文件中sed -n '/no/w 写入文件' 文件取出第一组数字,并且忽略掉开头的0sed 's/[^1-9]*([0-9]+).*/1/'打印1 和3 之间的行sed '/1/,/3/p' file取出指定行sed -n '1p' 文件在第5 行之前插入行sed '5iaaa' file在第5 行之后抽入行sed '5aaaa' file在匹配行前插入一行echo a|sed -e '/a/ib'在匹配行后插入一行echo a|sed -e '/a/ab'echo a|sed 's/a/&nb/g'引用外部变量sed -n ''$a',p'sed -n ""$a",p"取用户家目录(匹配不为/的字符和匹配:到结尾的字符全部删除)sed -n '{s/^[^/]*//;s/:.*//;p}' /etc/passwd将换行符转换为换行echo abcd\nabcde |sed 's/\n/@/g' |tr '@' 'n'删除掉@后面所有字符,和空行sed -e 's/@.*//g' -e '/^$/d'将几行合并成一行echo $(cat file)|sed 's/ //g'取一列最大值cat tmp|awk '{print $1}'|sort -n|sed -n '$p'查找属主权限为7 的文件ls -l|sed -n '/^.rwx.*/p'在a 前面加#号echo a|sed -e 's/a/#&/g'##################################图形dialog多选界面[方括号]dialog --title "Check me" --checklist "Pick Numbers" 3 1 "one" "off" 2 "two" "on" 3 "three""off" 2>tmp多选界面(圆括号)dialog --title "title" --radiolist "checklist" tag1 "item1" on tag2 "item2" off 2>tmp单选界面dialog --title "title" --menu "MENU" tag1 "item1" tag2 "item2" 2>tmp进度条dialog --title "Installation" --backtitle "Star Linux" --gauge "Linux Kernel" 选择yes/nodialog --title "标题" --backtitle "Dialog" --yesno "说明" 公告dialog --title "公告标题" --backtitle "Dialog" --msgbox "内容" 显示讯息后立即离开dialog --title "hey" --backtitle "Dialog" --infobox "Is everything okay&#;" 输入对话框dialog --title "hey" --backtitle "Dialog" --inputbox "Is okay&#;" "yes"显示文档内容dialog --title "Array " --backtitle "All " --textbox /root/txt 多条输入对话框dialog --title "Add a user" --form "Add a user" 4 "Username:" 1 1 "" 1 0 "Fullname:" 2 1 "" 2 0 2>tmp星号显示输入--insecuredialog --title "Password" --insecure --passwordbox "请输入密码" 选择日期dialog --stdout --title "日历" --calendar "请选择" 0 0 9 1 ##################################脚本头# sh 为当前系统默认shell,可指定为bash 等#!/bin/sh临时文件定义errtmp=/tmp/$$`date +%s%N`.errtmpouttmp=/tmp/$$`date +%s%N`.outtmptrue > $outtmp随机数$RANDOM进程号$$纳秒date +%N在当前bash 环境下读取并执行FileName 中的命令source file-name # 等同. FileName间隔睡眠5 秒sleep 5在接收到信号后将要采取的行动trap当前目录$PWD之前一个目录的路径$OLDPWD返回上一个目录路径cd -重复打印yes自动回答y 或者其他yes |rm -i *查看目录所有文件夹ls -p /home查看匹配完整路径ls -d /home/命令替换xargs#将前面的内容,作为后面命令的参数find / -perm + | xargs ls -l不换行执行下一句话echo -n aa;echo bb使转义生效echo -e "stssnnn"取字符串中字元echo $a | cut -c2-6排列组合(括号内一个元素分别和其他括号内元素组合)echo {a,b,c}{a,b,c}{a,b,c}返回目录名pwd | awk -F/ '{ print "目录名:" ,$2 }'替换上一条命令中的(foo)一个短语(bar)^foo^bar^!!:s/foo/bar/!!:gs/foo/bar##################################shell 例子判断参数是否为空-空退出并打印null#!/bin/shecho $1name=${1:&#;"null"}echo $name##################################循环数组for ((i=0;i<${#o[*]};i++))doecho ${o[$i]}done##################################判断路径if [ -d /root/Desktop/text/ ];thenecho "找到了"if [ -d /root/Desktop/text ]then echo "找到了text"else echo "没找到text"fielse echo "没找到 文件夹"fi##################################匹配替换密码#!/bin/shcat mailpassword > temp.txtsed -i "s/:/ = /" temp.txtw=`awk -F " = " '{print $1}' temp.txt`for d in $wdogrep -w $d svnpassword >/dev/nullif [ $&#; -eq 0 ]thensed -i "/^$d/d" svnpasswordgrep "^$d" temp.txt >> svnpassword#替换到转义就出问题#sed -i "/^$d/c $(grep "^$d" temp.txt)" svnpasswordfidonerm temp.txt##################################多行合并将两行并为一行(去掉换行符)sed '{N;s/n//}' file将4 行合并为一行(可扩展)awk '{if (NR%4==0){print $0} else {printf"%s ",$0}}' file将所有行合并awk '{printf"%s ",$0}'##################################shift 用法./cs.sh 1 2 3#!/bin/shuntil [ $# -eq 0 ]doecho "第一个参数为: $1 参数个数为: $#"#shift 命令执行前变量$1 的值在shift 命令执行后不可用shiftdone##################################给脚本加参数getopts#!/bin/shwhile getopts :ab: namedocase $name ina) aflag=1;;b) bflag=1bval=$OPTARG;;&#;) echo "USAGE:`basename $0` [-a] [-b value]"exit 1;;esacdoneif [ ! -z $aflag ] ; thenecho "option -a specified"echo "$aflag"echo "$OPTIND"fiif [ ! -z $bflag ] ; thenecho "option -b specified"echo "$bflag"echo "$bval"echo "$OPTIND"fiecho "here $OPTIND"shift $(($OPTIND -1))echo "$OPTIND"echo " `shift $(($OPTIND -1))` "##################################判断脚本参数是否正确./test.sh -p -P -h .0.0.1 -u root#!/bin/shif [ $# -ne 8 ];thenecho "USAGE: $0 -u user -p passwd -P port -h host"exit 1fiwhile getopts :u:p:P:h: namedocase $name inu)mysql_user=$OPTARG;;p)mysql_passwd=$OPTARG;; P)mysql_port=$OPTARG;;h)mysql_host=$OPTARG;;*)echo "USAGE: $0 -u user -p passwd -P port -h host"exit 1;;esacdoneif [ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]thenecho "USAGE: $0 -u user -p passwd -P port -h host"exit 1fiecho $mysql_user $mysql_passwd $mysql_port $mysql_host#结果root .0.0.1##################################dialog 取值接值退出outtmp=/tmp/outtmpdialog --no-shadow --backtitle "雪松制作" --title "请选择" --ok-label "提交" --cancel-label "取消"--menu "请选择" 0 1 "[目录]" q "[退出]" 2> $outtmp#判断提交取消if [ $&#; == "1" ]thenbreak#continuefi#只判断退出pt=`awk '{print}' $outtmp`if [ $pt == q ]thenbreakfi#判断操作case $pt in1)#操作;;q)exit #break;;esac##################################dialog 输入对话框加判断while :doouttmp=/tmp/outtmpdialog --title "雪松制作" --form "请输入" "用户:" 1 2 "" 1 0 "ID:" 2 2 "" 0 "" 6 2 "" 6 0 0 0 "输入格式如下" 7 2 "" 7 0 0 0 "说明" 8 2 "" 8 0 2> $outtmpyh=`sed -n '1p' $outtmp`id=`sed -n '2p' $outtmp`if echo $yh | grep -e '^[1-9][0-9]{0,2}' > /dev/null 2>&1thenif echo $id | grep -e '^[1-9][0-9]{0,}' > /dev/null 2>&1thenbreakelseecho "您输入的不合法,请从新输入!"fielseecho "您输入的不合法,请从新输入!"fidone##################################打印表格#!/bin/shclearawk 'BEGIN{print "+--------------------+--------------------+";printf "|%-s|%-s|n","Name","Number";print "+--------------------+--------------------+";}'a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`#cat a.txt |sort +1 -n |while read listfor list in $adoname=`echo $list |awk -F: '{print $1}'`number=`echo $list |awk -F: '{print $2}'`awk 'BEGIN{printf "|%-s|%-s|n","'"$name"'","'"$number"'";print "+--------------------+--------------------+";}'doneawk 'BEGIN{print " *** The End *** "print " "}'##################################判断日期是否合法#!/bin/shwhile read adoif echo $a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1then if echo $a | grep -e '^[0-9]{4}-[][0-9]-[0-3][0-9]$'thenbreakelseecho "您输入的日期不合法,请从新输入!"fielseecho "您输入的日期不合法,请从新输入!"fidoneecho "日期为$a"##################################打印日期段所有日期#!/bin/bashqsrq=jsrq=n=0>tmpwhile :;docurrent=$(date +%Y%m%d -d"$n day $qsrq")if [[ $current == $jsrq ]];thenecho $current >>tmp;breakelseecho $current >>tmp((n++))fidonerq=`awk 'NR==1{print}' tmp`##################################打印提示cat <<EOF#内容EOF登陆远程执行命令(特殊符号需要转义)ssh root@ip << EOF#执行命令EOF登陆mysql 执行命令mysql -uroot -ppasswd -S mysql.sock --default-character-set=gbk -A<<EOF>outtmp#mysql 命令EOF##################################数学计算的小算法#!/bin/shA=1B=1while [ $A -le ]doSUM=`expr $A * $B`echo "$SUM"if [ $A = ]thenB=`expr $B + 1`A=1fiA=`expr $A + 1`done##################################竖行转横行(三种)cat file|tr 'n' ' 'echo $(cat file)#!/bin/shfor i in `cat file`doa=${a}" "${i}doneecho $a##################################取用户的根目录#! /bin/bash#showhome.shIFS=:while read name pass uid gid gecos home shelldoecho $homedone执行./showhome.sh < /etc/passwd##################################把汉字转成encode 格式:echo 论坛| tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n"%c2%db%cc%b3大写的:echo 论坛| tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n" | tr "[a-f]" "[A-F]"%C2%DB%CC%B3##################################把带有大写字母的文件名改为全部小写#!/bin/bashfor f in *;domv $f `echo $f |tr "[A-Z]" "[a-z]"`done##################################查找连续多行,在不连续的行前插入#/bin/bashlastrow=nulli=0cat incl|while read linedoi=`expr $i + 1`if echo "$lastrow" | grep "#include <[A-Z].h>"thenif echo "$line" | grep -v "#include <[A-Z].h>"thensed -i ''$i'i\//All header files are include' incli=`expr $i + 1`fifilastrow="$line"done##################################====================================================================----------------------------------9 服务配置----------------------------------samba修改配置文/etc/samba/smb.conf[global]workgroup = WORKGROUPserver string = sambaserversecurity=sharehosts allow=网络主机[file]comment=home directoriespath=/etc/samba/xuesongpublic=yeswritable=yesbrowseable=yes重启service smb restartlinux 访问windows 共享smbclient -L //ip 地址或计算机名##################################DNS 服务器DNS 主配置文件,moon.com 域名,zone.moon.com 域的配置文件vi /etc/named.confzone "moon.com" IN {type master;file "zone.moon.com";allow-update { none; };};测试主配置文件named-checkconf新建域的配置文件zone.moon.comvi /var/named/chroot/var/named/zone.moon.com$TTL @ IN SOA xs. quanzhou..com. (HM1W1D)IN NS xs.IN MX 5 mail.www IN A ..1.ftp IN A ..1.mail IN A ..1.测试moon.com 域配置文件named-checkzone moon.com /var/named/chroot/var/named/zone.moon.com建立域配置文件的软连接ln -s /var/named/chroot/var/named/zone.moon.com /var/named/zone.moon.com重启named 服务service named restart设置DNSvi /etc/resolv.conf测试解析是否成功host www.moon.comnslookup www.moon.com##################################ftp 配置查看vsftp 是否安装rpm -qa | grep vsftp主配置文件vi /etc/vsftpd/vsftpd.conf启动VSFTPD 服务service vsftpd restart查看 端口是否开放netstat -atln |grep 、匿名用户是否允许访问anonymous_enable=YESanon_mkdir_write_enable=YES2、本地用户管理local_enable=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list将用户添加到vsftpd.chroot_list 文件中允许访问cat /etc/passwd |grep ":5[0-9][0-9]:" | awk -F : '{print $1}' > /etc/vsftpd.chroot_list3、虚拟用户管理(1)要用到文件数据库db4rpm -qa |grep db4(2)将帐户放入文本:(奇数行)用户名(偶数行)密码vi zhanghu.dat(3)生成帐户的文件数据库db_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db(4)修改文件数据库访问权限chmod /etc/vsftpd/vsftpd_zhanghu.db(5)手工建立虚拟用户所需的PAM 配置文件vi /etc/pam.d/vsftpd.zhanghuauth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghuaccount required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu(6)添加一个虚拟用户的入口帐户useradd -d /var/ZhanDian -s /sbin/nologin XuNiRuKou(7)在主配置文件中添加虚拟用户的配置内容虚拟用户的新添加配置chroot_local_user=YESguest_enable=YESguest_username=XuNiRuKoupam_service_name=vsftpd.zhanghu(8)在vsftpd.conf 配置文件中指定用户配置文件的目录user_config_dir=/etc/vsftpd/vsftpd_zhandian(9)建立配置文件中指定用户配置文件的目录mkdir /etc/vsftpd/vsftpd_zhandian()因为入口帐户是一个本地帐户,所以要指定虚拟用户具有本地帐户的权限,才能读写自己空间中的文件虚拟用户就可以就拥有写权限virtual_use_local_privs=YES()touch /etc/vsftpd/vsftpd_zhandian/xuesongecho "local_root=/var/ZhanDian/xuesong" >> /etc/vsftpd/vsftpd_zhandian/xuesong()mkdir /var/ZhanDian/xuesong()chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/()重启服务/etc/init.d/vsftpd restart()客户端虚拟账号测试建立用户脚本。最好在加上判断用户名是否存在#!/bin/shecho 请输入用户名read yecho $y >> zhanghu.datecho 请输入密码read mecho $m >> zhanghu.datdb_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.dbchmod /etc/vsftpd/vsftpd_zhanghu.dbtouch /etc/vsftpd/vsftpd_zhandian/$yecho "local_root=/var/ZhanDian/$y" >> /etc/vsftpd/vsftpd_zhandian/$ymkdir /var/ZhanDian/$ychown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/$y/etc/init.d/vsftpd restart##################################httpd 安装tar zxvf httpd-2.2..tar.gzcd httpd-2.2../configure --prefix=/usr/local/httpd --enable-rewritemake && make installls /usr/local/groupadd wwwuseradd -g www -M -s /sbin/nologin wwwcd /usr/local/httpd/vi conf/httpd.conf服务器开启在软件安装目录的bin 中./apachectl start网页放在的htdocs 中开机启动vi /etc/rc.d/rc.local/usr/local/httpd/bin/apachectl start如果启动提示httpd: Could not reliably determine the server fully qualified domain name, using .0.0.1 forServerName修改/etc/hosts 计算机名在httpd.conf 中开启ServerName .0.0.1:编码设置AddDefaultCharset UTF-8AddDefaultCharset GB##################################mysql 源码安装groupadd mysqluseradd mysql -g mysql -M -s /bin/falsetar zxvf mysql-5.0..tar.gzcd mysql-5.0../configure --prefix=/usr/local/mysql --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-mysqld-user=mysql --with-extra-charsets=all --with-unix-socket-path=/var/tmp/mysql.sockmake && make install生成mysql 用户数据库和表文件,在安装包中输入。scripts/mysql_install_db --user=mysqlvi ~/.bashrcexport PATH="$PATH: /usr/local/mysql/bin"配置文件,有large,medium,small 三个,根据机器性能选择cp support-files/my-medium.cnf /etc/my.cnfcp support-files/mysql.server /etc/init.d/mysqldchmod /etc/init.d/mysqldcd /usr/localchmod mysql -Rchgrp mysql mysql -Rchown mysql mysql/var -Rcp /usr/local/mysql/libexec/mysqld mysqld.oldln -s /usr/local/mysql/bin/mysql /sbin/mysqlln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladminln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/Smysql5ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/Kmysql5##################################mysql rpm 安装到 下载mysql RPM(service 和client),MySQL-server-community-5.1.-1.rhel5.i.rpm 安装服务端MySQL-client-community-5.1.-1.rhel5.i.rpm 安装客户端MySQL-devel-community-5.1.-1.rhel5.i.rpm 用于php 的mysql 安装rpm ?ivh MySQL-server-community-5.1.-1.rhel5.i.rpmrpm ?ivh MySQL-client-community-5.1.-1.rhel5.i.rpmrpm ?ivh MySQL-devel-community-5.1.-1.rhel5.i.rpm/etc/init.d/mysqld startmysqladmin -u root password 'xuesong'mysql -u root -S /var/lib/mysql/mysql.sock -p数据目录/var/lib/mysqlchkconfig --list |grep mysqldchkconfig --level 3 mysqld on配置文件(日志pid)/etc/my.cnfll /usr/bin/mysql*##################################mysql 常用命令启动mysql 服务./mysql/bin/mysqld_safe --user=mysql &登录mysql 的命令格式: mysql -h 主机地址-u 用户名-p 用户密码mysql -h... -P -uroot -pmysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK刷新flush privileges;显示所有数据库show databases;打开数据库use dbname;显示选中数据库中所有的表show tables;查看表结构desc tables;删除数据库drop database name;删除表drop table name;创建数据库create database name;mysqladmin -h myhost -u root -p create dbname创建表create table ka(ka_id varchar(6),qianshu int);插入字段alter table name add column accountid(列名) int() NOT NULL(字段不为空);不登陆mysql 插入字段mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int() NOTNULL;flush privileges;"查询select 列名称from 表名称;select host,user,password from user;备份数据库mysqldump -h host -u root -p dbname >dbname_backup.sqlmysqlhotcopy 只能备份MyISAM 引擎/bin/mysqlhotcopy -u root -p还原数据库mysql -h host -u root -p dbname < dbname_backup.sql登陆mysql 后还原sql 文件source 路径.sql赋予查询权限(没有用户,直接创建)grant select on db.* to log@"%" Identified by "";赋予所有权限(没有用户,直接创建)grant all privileges on db.* to log@"IP" identified by '' with grant option;更改密码update user set password=password('新密码') where user='root'mysqladmin -u root password 'xuesong'mysql 查看所有用户的语句select user();删除用户delete from user where user='sss' and host='localhost' ;查看主从show slave statusG;查看主从复制进程show processlist;添加索引解决停mysql 速度慢ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction);创建主从复制用户grant replication slave on *.* to '用户'@'%' identified by '密码';备份表mysqldump -u root -p -S mysql.sock --default-character-set=utf8 --hex-blob db table1 table1 >/data/db.sql查看系统的字符集和排序方式的设定SHOW VARIABLES LIKE 'character_set_%';查看mysql 所有参数show variables;删除空用户delete from user where user='';创建表指定存储引擎的类型:CREATE TABLE innodb (id int, title char()) ENGINE = INNODBCREATE TABLE myisam (id int, title char()) ENGINE = MyISAM改变现有的表使用的存储引擎:ALTER TABLE mytable ENGINE = MyISAM查询表引擎SHOW TABLE STATUS from 数据库库名where Name='表名';SHOW TABLE STATUS from db where Name='innodb';查看mysql 变量SHOW VARIABLES;查询用户权限select host,user,password from user;查看表的引擎状态show table status##################################gd 安装分别安装组件libxml、zlib、freetype、libpng、jpegsrc、gdlibxml2-2.6..tar.bz2zlib-1.2.3.tar.gzfreetype-2.2.1.tar.gzlibpng-1.2..tar.gzjpegsrc.v6b.tar.gzgd-2.0..tar.gzlibxml 安装tar xzvf libxml2-2.6..tar.bz2tar xvf libxml2-2.6..tarcd libxml2-2.6../configuremakemake installzlib 安装tar xzvf zlib-1.2.3.tar.gzcd zlib-1.2.3./configuremakemake installfreetype 安装tar xzvf freetype-2.2.1.tar.gzcd freetype-2.2.1./configure --prefix=/usr/local/php/modules/freetypemakemake installlibpng 安装tar xzvf libpng-1.2..tar.gzcd libpng-1.2../configure --prefix=/usr/local/php/modules/libpngjpeg 安装mkdir /usr/local/php/modules/jpeg6mkdir /usr/local/php/modules/jpeg6/binmkdir /usr/local/php/modules/jpeg6/libmkdir /usr/local/php/modules/jpeg6/includemkdir /usr/local/php/modules/jpeg6/manmkdir /usr/local/php/modules/jpeg6/man/man1一句创建mkdir -pv /usr/local/jpeg/{,bin,lib,include,man/man1,man1}tar zxvf jpegsrc.v6b.tar.gzcd jpeg-6b/./configure --prefix=/usr/local/php/modules/jpeg6 --enable-shared --enable-staticmakemake installgd 安装tar zxvf gd-2.0..tar.gzcd gd-2.0../configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/php/modules/jpeg6 --with-png=/usr/local/php/modules/libpng --with-zlib --with-freetype=/usr/local/php/modules/freetype修改Makefile 文件 行,重复的第二个freetype 改为libpngmakemake installphp 安装tar xvf php-5.1.6.tarcd php-5.1.bz2.6./configure --prefix=/usr/local/php --sysconfdir=/etc --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/php/lib --with-libxml-dir=/usr/local/libxml2 --with-zlib --with-jpeg-dir=/usr/local/php/modules/jpeg6 --with-freetype-dir=/usr/local/php/modules/freetype --with-gd=/usr/local/gd2 --with-openssl --with-regex=php --with-gnu-ld --with-tsrm-pthreads --with-bz2 --with-gettext --with-db4=/usr --enable-ftp --enable-bcmath --enable-dba --enable-sockets --enable-soap --enable-zend-multibyte --enable-mbstring --with-curlwrappers --with-curl=/usr/local/curl --with-pdo-mysql=/usr/local/mysql --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_configmakemake installcp php.ini-recommended /usr/local/php/lib/php.inivi /usr/local/php/lib/php.ini在PHP.IN 添加[eaccelerator]extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-/eaccelerator.soeaccelerator.shm_size=""eaccelerator.cache_dir="/usr/local/cache/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="0"eaccelerator.shm_prune_period="0"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9"完成后在/usr/local/httpd/conf/httpd.conf 文件上添加如下一行:AddType application/x-httpd-php .php .php5ln -s /usr/local/php/bin/php /sbin/phpvi index.php<&#; phpphpinfo();&#;>重启httpd/usr/local/httpd/bin/apachectl restart最后一步重新启动apache 报如下错误:httpd: Syntax error on line of /usr/local/apache/conf/httpd.conf: Cannot load/usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restoresegment prot after reloc: Permission denied不关闭SELINUX 的方法:# setenforce 0# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so# service httpd restart# setenforce 1##################################LINUX 集群LVS-- ipvsadm 命令参考ipvsadm 的用法和格式如下: ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p[timeout]] [-M netmask]ipvsadm -D -t|u|f virtual-service-addressipvsadm -C ipvsadm -R ipvsadm -S [-n]ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight] ipvsadm -d -t|u|fservice-address -r server-addressipvsadm -L|l [options]ipvsadm -Z [-t|u|f service-address]ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] ipvsadm--stop-daemonipvsadm -h命令选项解释:有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可以。-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。-C --clear 清除内核虚拟服务器表中的所有记录。-R --restore 恢复虚拟服务器规则-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录-L|-l --list 显示内核虚拟服务器表其他的选项:-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or[real-server-ip:port]-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or[real-server-ip:port]-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。-s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,-p--persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为 秒。-M --netmask netmask persistent granularity mask-r --real-server server-address 真实的服务器[Real-Server:port]-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)-i --ipip 指定LVS 的工作模式为隧道模式-m --masquerading 指定LVS 的工作模式为NAT 模式-w --weight weight 真实服务器的权值--mcast-interface interface 指定组播的同步接口-c --connection 显示LVS 目前的连接如:ipvsadm -L -c##################################VS-NAT 模式内容服务器的容量~使用保留地址的LAN双向重写安装ipvsadm 软件内核做个连接ln -s /usr/src/kernels/2.6.-.e-i/ /usr/src/linux安装软件查看ipvsadm 版本ipvsadm --version建立脚本/etc/rc.d/lvsecho "1" > /proc/sys/net/ipv4/ip_forward#清除ipvsadm 一系列规则ipvsadm -Cipvsadm -A -t 外网IP:端口-s rripvsadm -a -t 外网IP:端口-r 内网1 服务器IP:端口-m -w 1ipvsadm -a -t 外网IP:端口-r 内网2 服务器IP:端口-m -w 1修改内网服务器ip 和网关,开启httpd,建立不同页面测试缺点不能排除宕机的web 服务器,可使用LVS+Keepalived 组合##################################heartbeat 心跳检测(双机热备)安装heartbeat 的rpm 包需要先装heartbeat-pils 和heartbeat-stonith 两个包主节点的配置安装完解压配置文件rpm -q heartbeat -dcd /etc/ha.dcp /usr/share/doc/heartbeat-2.1.3/ha.cf .cp /usr/share/doc/heartbeat-2.1.3/authkeys .cp /usr/share/doc/heartbeat-2.1.3/haresources .查看计算机名,记录下来uname -nvi ha.cf打开日志记录文件logfile /var/log/ha-log打开心跳检测keepalive 2死亡时间deadtime warntime initdead 用什么协议端口(udp)udpport 使用哪个网卡作为心跳检测bcast eth1备用的IPucast eth1 ..1.主节点服务器node 主节点计算机名node 另一个计算机名ping 外网测试ping 一个外网的IP配置验证模式vi authkeys打开auth crc配置虚拟服务vi haresources加上一条名称和IP计算机名IP httpdsev1.example.com ... httpdhosts 文件要配置上两个机器的机器名和IPvi /etc/hosts... sev1.example.com sev..1. sev... sev1.example.com sev..1. sev1chmod authkeysservice heartbeat start在配置备用节点直接拷贝主节点的文件修改安装完进入安装目录cd /etc/ha.d用sftp 登陆主机sftp ...cd /etc/ha.dget ha.cfget authkeysget hare*bye只需要修改ha.cf 文件vi ha.cfucast eth1 ..1.启动备用节点service heartbeat start测试主节点和负节点建立不同index 页面主节点虚拟出外网ip eth0:0停掉主节点任务重新访问启动后在访问##################################DR 直接路由模式同一网段的LAN内容服务器的容量 以上降低LVF 的负载VIP 服务器的配置脚本vi /etc/init.d/vip.shifconfig eth0:0 ... broadcast ... netmask ... uproute add -host ... dev eth0:0ipvsadm -Cipvsadm -A -t ...: -s rripvsadm -a -t ...: -r ... -gipvsadm -a -t ...: -r ... -gipvsadmchmod /etc/init.d/vip.sh/etc/init.d/vip.sh服务器配置脚本vi /etc/init.d/lvs.shifconfig lo:0 ... broadcast ... netmask ... uproute add -host ... dev lo:0echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announcesysctl -pchmod /etc/init.d/lvs.sh/etc/init.d/lvs.sh第二台服务器sftp ...get /etc/init.d/lvs.shbyemv lvs.sh /etc/init.d//etc/init.d/lvs.sh测试两个服务器测试页面写入不同内容分别启动httpd真是IP 可以分别访问不同服务器,访问虚拟IP,则互相伦叫##################################IP 隧道模式WAN(或LAN 也可)内容服务器的容量能到vip-servervi /etc/init.d/vip.shifconfig tunl0 ... broadcast ... netmask ... uproute add -host ... dev tunl0ipvsadm -Cipvsadm -A -t ...: -s rripvsadm -a -t ... : -r ... -iipvsadm -a -t ... : -r ... -iipvsadmchmod -R /etc/init.d/vip.sh/etc/init.d/vip.sh1web 服务器ifconfig runl0 ... broadcast ... netmask ... uproute add -host ... dev tunl0echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/tunl0/arp_annaunceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_annauncesysctl -pchmod /etc/init.d/lvs.sh/etc/init.d/lvs.sh2web 服务器sftp ...get /etc/init.d/lvs.shbyemv lvs.sh /etc/init.d//etc/init.d/lvs.sh测试两个服务器测试页面写入不同内容分别启动httpd真是IP 可以分别访问不同服务器,访问虚拟IP,则互相伦叫##################################sendmail 邮件服务器配置DNS 服务器为mail 服务器IP 解析在配置文件中添加IN MX 5 mail.mail IN A ..1.重启服务service named restart测试ping mail.xuesong.comnslookup mail.xuesong.commail 服务器上设置DNS 服务器vi /etc/resolv.conf安装软件sendmail-8..8-8.el5.i.rpmsendmail-cf-8..8-8.el5.i.rpmsendmail-doc-8..8-8.el5.i.rpmyum install dovecotm4sendmail 配置文件目录:/etc/mailvi local-host-names添加xuesong.comvi sendmai.mc去掉前面两个dnldnl TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5LOGIN PLAIN')dnl修改IPDAEMON_OPTIONS('Port=smtp,Addr=..1., Name=MTA')dnl生成sendmail 配置文件sendmail.cfm4 sendmail.mc > sendmail.cf查看启动级别chkconfig --list |grep sas开启启动级别3chkconfig --level 3 saslauthd onmakemap hash access.db < accessvi /etc/dovecot.conf打开下面一句话protocols = imap imaps pop3 pop3sservice sendmail restartservice dovecot restartgroup mailuseradd -g mail -M -s /sbin/nologin 用户名##################################JDK 安装rpm -qa|grep jdk确认gcj 的版本号rpm -qa | grep gcj卸载gcjyum -y remove java-1.4.2-gcj-compat从SUN 下载jdk-1_5_0_-linux-i-rpm.bin 或jdk-1_5_0_-linux-i.binmkdir /usr/javacd /usr/java1. jdk-1_5_0_-linux-i-rpm.bin 文件安装chmod jdk-1_5_0_-linux-i-rpm.binrpm -ivh jdk-1_5_0_-linux-i.rpm2. jdk-1_5_0_-linux-i.bin 文件安装chmod u+x jdk-1_5_0_-linux-i.bin./jdk-1_5_0_-linux-i.bin添加环境变量vi /etc/profileexport JAVA_HOME=/usr/local/java/jdk1.6.0_exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/binreboot 重启生效##################################xen 管理查看虚拟主机列表xm list使用文本方式连接虚拟系统xm console test启动虚拟主机xm create test虚拟机和主机切换ctrl+]关闭虚拟主机xm shutdown 主机名虚拟机克隆(关闭后克隆)virt-clone -o test -n test1 -f /data/xen/test1.img虚拟机增加硬盘dd if=/dev/zero of=/data/xen/test.img bs=1M count=8编辑原来配置文件,添加新磁盘文件vi /etc/xen/vmname = "vm"uuid = "bb-eb-d3-1e-ee2af"maxmem = memory = vcpus = 1bootloader = "/usr/bin/pygrub"on_poweroff = "destroy"on_reboot = "restart"on_crash = "restart"vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]disk = [ "tap:aio:/data/vm.img,xvda,w", "tap:aio:/data/vmb.img,xvdb,w" ]vif = [ "mac=::::8a:ea,bridge=virbr0,script=vif-bridge" ]启动XEN 虚拟机并登陆测试新加的磁盘增加虚拟机网卡cat /etc/xen/vmname = "vm"uuid = "bb-eb-d3-1e-ee2af"maxmem = memory = vcpus = 1bootloader = "/usr/bin/pygrub"on_poweroff = "destroy"on_reboot = "restart"on_crash = "restart"vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]disk = [ "tap:aio:/data/vm.img,xvda,w" ]vif = [ "mac=::::8a:ea,bridge=xenbr0,script=vif-bridge","mac=::::8a:eb,bridge=xenbr0,script=vif-bridge" ]

以上所述是小编给大家介绍的linux运维常用命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

Linux常用命令全集(超全面) 系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列

Linux下Shell脚本中几种基本命令的替换区别 Part1:`command`这是命令标准输出作为函数标准输入操作方法之一,有很大的弊端以及不安全的地方。缺点一:比较陈旧。缺点二:容易与单引号混淆。(

linux ar 命令的使用说明和实例讲解 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件

标签: 有哪些好用的linux

本文链接地址:https://www.jiuchutong.com/biancheng/371471.html 转载请保留说明!

上一篇:linux shell 路径截取正则表达式(linux shell截取字符串)

下一篇:Linux常用命令全集(超全面)(linux 常用命令大全及其详解)

  • 怎么算固定资产
  • 负债与所有者权益比率
  • 增值税税率调整文件
  • 公司个人薪金怎么申报宁波
  • 什么是资本性支出和支出
  • 库存商品采用定价法
  • 公司房租发票是专票还是普票
  • 微信手续费发票可以抵扣吗?
  • 怎么红冲暂估成本
  • 合伙制公司有董事会吗
  • 施工企业营改增税费有哪些
  • 进项税额一直大于销项税额
  • 加速折旧的例子
  • 12月的工资啥时候发
  • 以前年度损益调整怎么用
  • 什么情况下可以取保候审
  • 实收资本是否可以更改
  • 年增收节支总额与新增利税的关系
  • 个体户需要对公户吗
  • 工程项目预缴税金
  • 小规模适用税率
  • 分配股利在报表中怎么填
  • 办公室装修合同印花税怎么缴纳?
  • 免税进口种子要符合哪些条件?
  • 每个季度零申报需要做什么
  • 系统更新没有推送
  • 生产车间的各种费用
  • PHP 中dirname(_file_)讲解
  • 应税货物销售额怎么填
  • phpifelse
  • 领用增值税专用发票需要旧发票兑换吗
  • php时间不对
  • 银行贷款成本高
  • openpose的输出
  • docker部署架构图
  • css字体设置渐变色
  • 房地产企业出售房产增值税
  • 季节性用工法律规定
  • 个体工商户开普通发票需要交税吗
  • 自产自销的农产品可以抵税吗
  • 固定资产入账的方式
  • 个税申报系统累计收入怎么算
  • 财务软件费用可以抵税吗
  • 更正申报补缴税款会影响记录
  • 怎么理解财务会计这个岗位
  • 营业总收入包含什么
  • 将自产产品用于公益事业
  • 分公司可以在银行贴现吗
  • 美容院收入怎么做会计分录
  • 一般纳税人无票收入怎么做账分录呢
  • 外贸企业退税怎么申报
  • 固定资产置换存货
  • 公司向股东个人借款怎么做账
  • 公司开出发票但未收到款如何写分录?
  • 小规模主营业务成本是否含税
  • 资产收购一般税务处理
  • 什么叫先打后补
  • 开支票如何做账
  • 投资收益下期间怎么结转
  • 商业企业购入商品
  • mysql好在哪里
  • ubuntu笔记软件
  • windows刷新快捷键是什么
  • 如何关闭win8自带杀毒
  • centos iscsi 多路径
  • swstrtr.exe - swstrtr是什么进程
  • windows7开机
  • 修改windows版本
  • macbook的qq怎么更换背景
  • win8中的wps点打印预览就卡
  • win8初始登录账号密码
  • 合并多个js文件
  • 解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
  • [置顶]马粥街残酷史
  • javascript中的判断语句
  • python外星人入侵游戏
  • 使用js如何创建元素
  • unity3d入门视频教程
  • 金坛归属南京
  • 企业所得税账务如何处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号