本文仅作为日常工作中的部署记录，相关操作仅供参考一、安装JDK及配置安装JDK文件拷贝到/data/webapps/目录cp jdk-8u271-linux-x64.tar.gz /usr/local/jdk/进入目录cd /usr/local/jdk/解压到当前目录tar -zxvf jdk-8u271-linux-x64.tar.gz配置环境变量编辑/etc/profile文件sudo vi /etc/profile在文件底部追加如下环境变量设置信息JAVA_HOME=/usr/local/jdk/jdk1.8.0_271 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH执行如下命令更新环境变量source /etc/profile验证是否生效[root@VM-0-17-centos jdk1.8.0_271]# java -version java version "1.8.0_271" Java(TM) SE Runtime Environment (build 1.8.0_271-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode) [root@VM-0-17-centos jdk1.8.0_271]# 二、部署Tomcat创建Tomcat安装目录mkdir -p /wxdata/javaapps/拷贝文件到安装目录cp apache-tomcat-8.5.46.tar.gz /wxdata/javaapps/进入安装目录cd /wxdata/javaapps/解压安装文件tar -zxvf apache-tomcat-8.5.59.tar.gz 修改目录名为tomcat8-pmsdemomv apache-tomcat-8.5.59 tomcat8-pmsdemo
添加用户并重置密码[root@VM-0-17-centos software]# useradd microxiang [root@VM-0-17-centos software]# passwd microxiang Changing password for user microxiang. New password: Retype new password: passwd: all authentication tokens updated successfully.添加用户到sudoers修改/etc/sudoers文件权限进入超级用户，因为没有写权限，所以要先把写权限加上chmod u+w /etc/sudoers编辑/etc/sudoers文件vim /etc/sudoers找到这一 行："root ALL=(ALL) ALL"在起下面添加"microxiang ALL=(ALL) ALL"(microxiang是用户名)，然后保存。## Allow root to run any commands anywhere root ALL=(ALL) ALL microxiang ALL=(ALL) ALL 注：如果不想每次都输入密码，可以修改后不需要每次都输入密码了。microxiang ALL=(ALL) NOPASSWD: ALL最后恢复没有写权限模式撤销文件的写权限chmod u-w /etc/sudoers完整操作过程如下：[root@VM-0-17-centos software]# useradd microxiang [root@VM-0-17-centos software]# passwd microxiang Changing password for user microxiang. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@VM-0-17-centos software]# chmod u+w /etc/sudoers [root@VM-0-17-centos software]# vim /etc/sudoers [root@VM-0-17-centos software]# chmod u-w /etc/sudoers [root@VM-0-17-centos software]#
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上，针对大访问量网站的需求，添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网，天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。一、安装创建安装目录mkdir -p /usr/local/nginx安装依赖sudo yum -y install zlib-devel pcre-devel openssl-devel从官网下载最新版本的Tenginewget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz解压tar -zxvf tengine-2.3.2.tar.gz进入目录cd tengine-2.3.2安装初始化./configure --prefix=/usr/local/nginx --add-module=modules/ngx_http_upstream_check_module --add-module=modules/ngx_http_upstream_session_sticky_module编译、安装make && make install配置自启动增加自启动配置文件：sudo vi /lib/systemd/system/nginx.service输入如下内容并保存：[Unit] Description=The nginx HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target②.3 设为可执行sudo chmod 755 /lib/systemd/system/nginx.service②.4 设置开启自启动sudo systemctl enable nginx.service
查看某文件夹下所有的文件数量：# command 1 : find -type f -o -type s -o -type p -o -type d |wc -l # command 2 : ls -al|grep '^-'|wc -l # command 3 : find -type f |wc -l删除0字节文件find -type f -size 0 -exec rm -rf {} \; 查看进程# 按内存从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr # 按cpu利用率从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -nr打印说cache里的URLgrep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' 查看http的并发请求数及其TCP连接状态：netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'快速替换# sed在这个文里Root的一行，匹配Root一行，将no替换成yes. sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config 如何杀掉mysql进程：# commond 1 ps aux |grep mysql |grep -v grep |awk '{print $2}' |xargs kill -9 # commond 2 killall -TERM mysqld # commond 3 通过pid文件查杀进程PID kill -9 `cat /usr/local/apache2/logs/httpd.pid` 显示运行3级别开启的服务:ls /etc/rc3.d/S* |cut -c 15- 如何在编写SHELL显示多个信息，用EOFcat << EOF +--------------------------------------------------------------+ | === Welcome to Tunoff services === | +--------------------------------------------------------------+ EOFfor 的巧用(如给mysql建软链接)cd /usr/local/mysql/bin for i in * do ln /usr/local/mysql/bin/$i /usr/bin/$i done取IP地址：# commond 1 ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- # commond 2 ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'内存的大小:free -m |grep "Mem" | awk '{print $2}' 查看Apache的并发请求数及其TCP连接状态：netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}' CPU的数量cat /proc/cpuinfo |grep -c processorCPU负载 cat /proc/loadavg检查前三个输出值是否超过了系统逻辑CPU的4倍。 查看CPU负载# 检查%idle是否过低(比如小于5%) mpstat 1 1 内存空间free # 检查free值是否过低 也可以用 # cat /proc/meminfo swap空间# 检查swap used值是否过高 free # 如果swap used值过高，进一步检查swap动作是否频繁： vmstat 1 5 # 观察si和so值是否较大磁盘空间df -h # 检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽，可以进入该分区的挂载点，用以下命令找出占用空间最多的文件或目录： du -cks * | sort -rn | head -n 10 磁盘I/O负载iostat -x 1 2 # 检查I/O使用率(%util)是否超过100% 网络负载sar -n DEV # 检查网络流量(rxbyt/s, txbyt/s)是否过高网络传输情况netstat -i # 检查是否有网络错误(drop fifo colls carrier) 也可以用命令： cat /proc/net/dev网络连接数目netstat -an | grep -E "^(tcp)" | cut -c 68- | sort | uniq -c | sort -n查看端口占用sudo netstat -tunlp | grep 8401 # OR sudo lsof -i:8401 进程总数# 检查进程个数是否正常 (比如超过250) ps aux | wc -l进程# 观察是否有异常进程出现 top -id 1 用户who | wc -l # 检查登录用户是否过多 (比如超过50个) 也可以用命令：# uptime系统日志 cat /var/log/rflogview/*errors # 检查是否有异常错误记录 也可以搜寻一些异常关键字，例如： grep -i error /var/log/messages grep -i fail /var/log/messages 核心日志# 检查是否有异常错误记录 dmesg系统时间date 打开文件数目lsof | wc -l 日志# 需安装logwatch logwatch –print # 配置/etc/log.d/logwatch.conf，将 Mailto 设置为自己的email 地址，启动mail服务 (sendmail或者postfix)，这样就可以每天收到日志报告了。 # 缺省logwatch只报告昨天的日志，可以用# logwatch –print –range all 获得所有的日志分析结果。 # 可以用# logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。杀掉80端口相关的进程lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh清除僵死进程。ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9tcpdump 抓包 ，用来防止80端口被人攻击时可以分析数据tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts查看有多少个活动的php-cgi进程netstat -anp | grep php-cgi | grep ^tcp | wc -l chkconfig --list | awk '{if ($5=="3:on") print $1}' 在某个路径下查文件# 在/etc下查找“*.log”的文件 find /www/wwwlogs/ -name "*.log"列出某个路径下所有文件，包括子目录。find /etc -name "*"在某个路径下查找所有包含“hello abcserver”字符串的文件。find /etc -name "*" | xargs grep "hello zhuzl" # 或者 find /etc -name "*" | xargs grep "hello zhuzl" > ./zhuzltest.txt 拷贝远程文件# 拷贝远程（192.168.1.3）的/home2/backup/ 到本地的 /home/mover00/shadow_bak/sites/ scp -P 4400 -r root@192.168.1.3:/home2/backup/ /home/mover00/shadow_bak/sites/ # 拷贝本地的/home2/backup/ 到远程（192.168.1.3）的 /home/mover00/shadow_bak/sites/ scp -P 4400 -r /home2/backup/ root@192.168.1.3:/home/mover00/shadow_bak/sites/ # 格式如下： scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2如何知道哪个应用锁定了文件lsof <文件全路径>