李解的博客

2021-06-27

Linux运维命令大全

系统信息


配置信息

arch									# 显示机器的处理器架构(1)
uname -m							# 显示机器的处理器架构(2)
uname -r							# 显示正在使用的内核版本
dmidecode -q					# 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda		# 罗列一个磁盘的架构特性
hdparm -tT /dev/sda		# 在磁盘上执行测试性读取操作
cat /proc/cpuinfo			# 显示CPU info的信息
cat /proc/interrupts	# 显示中断
cat /proc/meminfo			# 校验内存使用
cat /proc/swaps				# 显示哪些swap被使用
cat /proc/version			# 显示内核的版本
cat /proc/net/dev			# 显示网络适配器及统计
cat /proc/mounts			# 显示已加载的文件系统
lspci -tv							# 罗列PCI设备
lsusb -tv							# 显示USB设备

lsb_release -a				# 系统版本
getconf LONG_BIT			# 系统位数

系统日期

date '+%Y-%m-%d %T'														# 查看系统时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"	# 设置时间和日期(centos7)

关机命令

shutdown -h now		# 关闭系统
shutdown -r now		# 重启(1)
reboot						# 重启(2)
logout						# 注销

内存信息

# 内存使用
# 内存使用率=(used-cached)/total
# swap使用率=used/total
free -m

#内存清理
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

磁盘空间

lsblk										# 列出所有块设备
df -h										# 查看系统整体磁盘占用情况
ls -lSr |more						# 以尺寸大小排列文件和目录
du -sh dir1							# 估算目录 'dir1' 已经使用的磁盘空间'
du -sk * | sort -rn			# 以容量大小为依据依次显示文件和目录的大小

# 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n
# 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n

进程查看

ps -ef |grep java					# 查看java进程
ps -ef |grep tomcat				# 查看tomcat进程
ps -aux											# 查看所有进程
lsof -n | grep deleted		# 查看已删除空间却没有释放的进程
kill -9 进程号							# 强杀进程

# 按内存从大到小排列
PS -e -o "%C : %p : %z : %a"|sort -k5 -nr
# 按 CPU 利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr

# 杀掉80端口相关的进程
lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh
# 清除僵死进程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
# 查看有多少个活动的 php-cgi 进程
netstat -anp | grep php-cgi | grep ^tcp | wc -l

用户和群组

groupadd group_name				# 创建一个新用户组
groupdel group_name				# 删除一个用户组

# 重命名一个用户组
groupmod -n new_group_name old_group_name
# 创建一个属于 "admin" 用户组的用户
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1

useradd user1				# 创建一个新用户
userdel -r user1		# 删除一个用户 ( '-r' 排除主目录)

# 修改用户属性
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1

passwd											# 修改口令
passwd user1								# 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1	# 设置用户口令的失效期限
pwck												# 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
grpck												# 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
newgrp group_name					# 登陆进一个新的群组以改变新创建文件的预设群组
cat /etc/passwd						# 查看用户信息

文件系统分析

badblocks -v /dev/hda1    #检查磁盘hda1上的坏磁块
fsck /dev/hda1            #修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1       #修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1          #修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1       #修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1       #修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1       #修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1      #修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1         #修复/检查hda1磁盘上dos文件系统的完整性

文件和目录

目录切换

cd /home			# 进入 '/ home' 目录'cd ..					# 返回上一级目录cd ../..			# 返回上两级目录cd						# 进入个人的主目录cd ~user1			# 进入个人的主目录cd -					# 返回上次所在的目录pwd						# 显示工作路径

目录查看

ls					# 查看目录中的文件ls -F				# 查看目录中的文件ls -l				# 显示文件和目录的详细资料ls -a				# 显示隐藏文件ls *[0-9]*	# 显示包含数字的文件名和目录名tree				# 显示文件和目录由根目录开始的树形结构(1)lstree			# 显示文件和目录由根目录开始的树形结构(2)du -sh *		# 查看当前文件以及文件夹的大小

查看文件内容

cat file1										# 从第一个字节开始正向查看文件的内容tac file1										# 从最后一行开始反向查看一个文件的内容more file1									# 查看一个长文件的内容less file1									# 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作head -2 file1								# 查看一个文件的前两行tail -2 file1								# 查看一个文件的最后两行tail -f /var/log/messages		# 实时查看被添加到一个文件中的内容more sm.out									# 分页读取sm.out文件

文件/目录操作

mkdir dir1									# 创建一个叫做 'dir1' 的目录'mkdir dir1 dir2							# 同时创建两个目录mkdir -p /tmp/dir1/dir2			# 创建一个目录树rm -f file1									# 删除一个叫做 'file1' 的文件'rmdir dir1									# 删除一个叫做 'dir1' 的目录'rm -rf dir1									# 删除一个叫做 'dir1' 的目录并同时删除其内容rm -rf dir1 dir2						# 同时删除两个目录及它们的内容mv dir1 new_dir							# 重命名/移动 一个目录cp file1 file2							# 复制一个文件cp dir/* .									# 复制一个目录下的所有文件到当前工作目录cp -a /tmp/dir1 .						# 复制一个目录到当前工作目录cp -a dir1 dir2							# 复制一个目录ln -s file1 lnk1						# 创建一个指向文件或目录的软链接ln file1 lnk1								# 创建一个指向文件或目录的物理链接vi 文件名										# 编辑文件 (I 进行插入 esc 取消编辑 :wq 保存退出 :q! 强行退出)find /opt/data/log -mtime +92 -type f -name *.log -exec rm -rf {} \; #删除N天之前的文件  find -type f -size 0 -exec rm -rf {} \;	# 删除0字节文件tail -n 200000 sm.out > sm.out_201104		# 从sm.out文件读取最新200000行数据至备份文件>sm.out																		# 清空sm.out文件内容# 将本机文件传输至另一台服务器scp /home/1509681299449.png root@10.127.40.25:/home/test

文件格式转换

file -i aaa.txt													# 文件编码格式dos2unix filedos.txt fileunix.txt			# 将一个文本文件的格式从MSDOS转换成UNIXunix2dos fileunix.txt filedos.txt			# 将一个文本文件的格式从UNIX转换成MSDOSrecode ..HTML < page.txt > page.html	# 将一个文本文件转换成htmlrecode -l | more												# 显示所有允许的转换格式

文件搜索

find / -name file1								# 从 '/' 开始进入根文件系统搜索文件和目录find / -user user1								# 搜索属于用户 'user1' 的文件和目录find /home/user1 -name \*.bin			# 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件find /usr/bin -type f -atime +100	# 搜索在过去100天内未被使用过的执行文件find /usr/bin -type f -mtime -10	# 搜索在10天内被创建或者修改过的文件find / -name \*.rpm -exec chmod 755 '{}' \;	# 搜索以 '.rpm' 结尾的文件并定义其权限find / -xdev -name \*.rpm					# 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备locate \*.ps											# 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令whereis halt											# 显示一个二进制文件、源码或man的位置which halt												# 显示一个二进制文件或可执行文件的完整路径

文件的权限

# 使用 "+" 设置权限,使用 "-" 用于取消ls -lh											# 显示权限ls /tmp | pr -T5 -W$COLUMNS	# 将终端划分成5栏显示chmod ugo+rwx directory1	# 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限chmod go-rwx directory1		# 删除群组(g)与其他人(o)对目录的读写执行权限chown user1 file1					# 改变一个文件的所有人属性chown -R user1 directory1	# 改变一个目录的所有人属性并同时改变改目录下所有文件的属性chgrp group1 file1				# 改变文件的群组chown user1:group1 file1	# 改变一个文件的所有人和群组属性find / -perm -u+s					# 罗列一个系统中所有使用了SUID控制的文件chmod u+s /bin/file1			# 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限chmod u-s /bin/file1			# 禁用一个二进制文件的 SUID位chmod g+s /home/public		# 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的chmod g-s /home/public		# 禁用一个目录的 SGID 位chmod o+t /home/public		# 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件chmod o-t /home/public		# 禁用一个目录的 STIKY 位

文件的特殊属性

# - 使用 "+" 设置权限,使用 "-" 用于取消chattr +a file1						# 只允许以追加方式读写文件chattr +c file1						# 允许这个文件能被内核自动压缩/解压chattr +d file1						# 在进行文件系统备份时,dump程序将忽略这个文件chattr +i file1						# 设置成不可变的文件,不能被删除、修改、重命名或者链接chattr +s file1						# 允许一个文件被安全地删除chattr +S file1						# 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘chattr +u file1						# 若文件被删除,系统会允许你在以后恢复这个被删除的文件lsattr										# 显示特殊的属性

打包和压缩文件

bunzip2 file1.bz2				# 解压一个叫做 'file1.bz2'的文件bzip2 file1							# 压缩一个叫做 'file1' 的文件gunzip file1.gz					# 解压一个叫做 'file1.gz'的文件gzip file1							# 压缩一个叫做 'file1'的文件gzip -9 file1						# 最大程度压缩rar a file1.rar test_file						# 创建一个叫做 'file1.rar' 的包rar a file1.rar file1 file2 dir1		# 同时压缩 'file1', 'file2' 以及目录 'dir1'rar x file1.rar												# 解压rar包unrar x file1.rar											# 解压rar包tar -cvf archive.tar file1						# 创建一个非压缩的 tarballtar -cvf archive.tar file1 file2 dir1	# 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件tar -tf archive.tar										# 显示一个包中的内容tar -xvf archive.tar									# 释放一个包tar -xvf archive.tar -C /tmp					# 将压缩包释放到 /tmp目录下tar -cvfj archive.tar.bz2 dir1				# 创建一个bzip2格式的压缩包tar -jxvf archive.tar.bz2							# 解压一个bzip2格式的压缩包tar -cvfz archive.tar.gz dir1					# 创建一个gzip格式的压缩包tar -zxvf archive.tar.gz							# 解压一个gzip格式的压缩包tar czf - archive.tar | split -b 1000m - Dark.tar. #将压缩包切分成每个1G的分卷zip file1.zip file1									# 创建一个zip格式的压缩包zip -r file1.zip file1 file2 dir1		# 将几个文件和目录同时压缩成一个zip格式的压缩包unzip file1.zip												# 解压一个zip格式压缩包

服务器配置

基础包安装


yum install net-tools			# 解决ifconfig不能执行问题yum install -y telnet			# 解决telnet不能执行问题yum install -y unzip zip	# 解决不能执行zip命令问题

网卡配置


# no01 服务器网卡查看 (可能有多块网卡)ip a# no02 编辑网卡信息cd /etc/sysconfig/network-scriptsvi ifcfg-网卡名称# 修改原有参数BOOTPROTO=noneIPV6INIT=noIPV6_AUTOCONF=noIPV6_DEFROUTE=noIPV6_FAILURE_FATAL=noONBOOT=yes# 追加新参数 (IP/掩码/网关)IPADDR=xxx.xxx.xxx.xxxNETMASK=xxx.xxx.xxx.xxxGATEWAY=xxx.xxx.xxx.xxx# 备注:如有多块网卡,只能有一块网卡上配网关参数(GATEWAY)# no3 重启网卡服务service network restart# no4 确认网卡是否生效ip a# 禁用网卡eth0sudo ifconfig eth0 down# 启用网卡eth0sudo ifconfig eth0 up

YUM源配置


#no1 挂在镜像盘(光驱方式)mount /dev/sr0 /media# 挂在镜像盘(文件方式)mount -t auto xxxx.iso#no2 拷贝镜像到本地cp -rf /media /os#no3 如果第一次配置,需执行cd /etc/yum.repos.d/mkdir defaultmv *.repo default#no4 修改yum源vi /etc/yum.repos.d/rhel.repo[rhel]name=rhelbaseurl=file:///osenabled=1gpgcheck=0#no5 卸载镜像盘umount /media

路由配置


# 参考资料 https://blog.csdn.net/chenlycly/article/details/52141854# 路由查看route -n# 添加路由命令(临时)route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.4.17.62# 删除路由命令(临时)route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.4.17.62# 静态路由添加步骤  -- 方案一cd /etc/sysconfig/network-scripts/vi route-网卡名称10.0.0.0/8 via 10.4.22.46# 静态路由样例10.0.0.0/8 via 10.4.22.4610.4.0.0/16 via 10.4.22.4610.4.5.0/24 via 10.4.22.4610.4.5.10/32 via 10.4.22.46# 静态路由添加步骤  -- 方案二vi /etc/sysconfig/static-routesany net 10.6.0.0 netmask 255.255.0.0 gw 10.4.15.46# 重启网卡服务 (静态路由生效,需重启网卡服务)service network restart

防火墙配置


Centos6 相关命令
# 参考资料 http://url.cn/43mGinc# 查看防火墙状态service iptables status# 开启防火墙service iptables start# 关闭防火墙service iptables stop# 重启防火墙service iptables restart# 查看本机关于IPTABLES的设置情况iptables -L -n# 允许指定IP/段访问任何端口-示例 (立即生效,重启后失效)iptables -A INPUT -s 169.254.0.0/16 				-j ACCEPTiptables -A INPUT -s 192.168.164.19 				-j ACCEPT# 允许指定IP/段访问指定端口-示例 (立即生效,重启后失效)iptables -A INPUT -p tcp -s 1.1.1.0/24 --dport 1521 -j ACCEPTiptables -A INPUT -p tcp -s 1.1.1.0/24 --sport 1521 -j ACCEPT# 开放指定端口供任何IP访问-示例 (立即生效,重启后失效)iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 端口转发iptables -t nat -A PREROUTING -p tcp --dport 18080 -j REDIRECT --to-port 5236# 将最新防火墙生效策略保存为静态service iptables save# 防火墙服务开机自启动chkconfig iptables on# 静态防火墙配置 (重启后生效)vi /etc/sysconfig/iptables  -A INPUT -p tcp -s 1.1.1.0/24 --dport 1521 -j ACCEPT  ...# 删除防火墙策略# 使用iptables -L -n  --line-number  可以查看到每个规则chain  的序列号iptables -L -n  --line-number# 例如我们INPUT 这里边的某个规则,就使用使用命令# 例如删除INPUT的第二条规则用如下命令。iptables -D INPUT 2

Centos6 iptables样例文件

# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [1780145:408314743]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [2252854:797894887]-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j DROP-A INPUT -i lo -j ACCEPT# begin# 添加端口白名单策略-A INPUT -s 10.0.0.0/8 -p tcp -m tcp --dport 20010 -j ACCEPT -A INPUT -s 10.0.0.0/8 -p tcp -m tcp --sport 20010 -j ACCEPT...# 添加端口屏蔽策略-A INPUT -p tcp -m tcp --dport 22 -j DROP ...-A INPUT -p icmp -j DROP# end-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT
Centos7 相关命令
# 参考资料 https://www.cnblogs.com/phpshen/p/5842118.html# 查看防火墙状态systemctl status firewalld# 开启防火墙systemctl start firewalld.service# 关闭防火墙systemctl stop firewalld.service# 开机自动启动systemctl enable firewalld.service# 关闭开机制动启动systemctl disable firewalld.service# 开放33066端口,供所有IP访问 (追加到配置文件,需重启防火墙才能生效)firewall-cmd --zone=public --add-port=33066/tcp --permanent# 开放33066端口,供所有IP访问 (立马生效,重启防火墙后丢失)firewall-cmd --zone=public --add-port=33066/tcp# 删除33066开放策略firewall-cmd --remove-port=3306/tcp --permanent# 开放部分端口,供部分IP访问firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.144.101.128/27" port protocol="tcp" port="8080-8090" accept" 	--permanent# 开放IP白名单(不限定端口)firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.144.101.128/27" accept" 	--permanent# 其他firewall-cmd --add-icmp-block=echo-request --permanentfirewall-cmd --remove-service=ssh --permanentfirewall-cmd --zone=public --remove-port=20010/tcp --permanent# 重新加载防火墙firewall-cmd --reload# 查看防火墙策略firewall-cmd --list-all

selinux配置


# 临时关闭SELinuxsetenforce 0# 临时打开SELinuxsetenforce 1# 查看SELinux状态getenforce# 静态设置vi /etc/sysconfig/selinuxSELINUX=disabled

安全配置

禁止root远程登录

# 将普通账号加入wheel组usermod -a -G wheel 账号名# 设置只有wheel组能通过su切换root账号(centos6)cp /etc/pam.d/su /etc/pam.d/su.baksed -i '3iauth            required        pam_wheel.so    group=wheel' /etc/pam.d/sucat /etc/pam.d/su# 设置只有wheel组能通过su切换root账号(centos7)vi /etc/pam.d/su#放开此行注释即可# auth required pam_wheel.so use_uid# 设置禁止root远程登录sed -i 's/^PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config/etc/init.d/sshd restart
禁止ping

说明:# 影响ping的主要有两方面因素:一个是内核参数,一个是防火墙规则配置。只有两个参数同时允许,才可以ping通,任意一个因素配置不被允许则不允许ping通。在centos 6 或者7中修改其实是没有什么差异的

# 内核参数开启ping方法#1.临时开启ping,则执行如下命令echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all#2.永久开启,执行命令vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=0 //增加这一行内容(如果此行已经存在,则确认后面参数为0)sysctl -p //执行此命令使配置生效# 内核参数关闭ping方法#1.临时关闭执行:echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all#2.永久关闭:vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1sysctl -p
# 防火墙规则# 允许ping:iptables -I INPUT -i eth0 -p icmp -s 0/0 -d 0/0 -j ACCEPT# 禁止pingiptables -I INPUT -i eth0 -p icmp -s 0/0 -d 0/0 -j DROP

时间同步

centos7 ntp时间同步
# 参考资料 https://www.pianshen.com/article/1929200719/# 准备2台服务器:192.168.0.104(ntpserver)、192.168.0.107(ntpclient)# no1 准备工作 (服务端和客户端节点都需要执行)# 首先安装ntpyum install ntp# 安装完毕之后,启动服务systemctl start ntpd.service# 设置开机自启动systemctl enable ntpd.service# no2 ntp服务端设置# 第一台服务器192.168.0.104,作为ntpserver,将他设置为同步外网时间(ntpd服务开启默认就同步了)。但是得设置允许内网网段可以连接它,将它作为内网的时间同步服务器,所以需要一个简单配置。vi /etc/ntp.conf# 添加内容restrict 192.168.0.0 mask 255.255.255.0# 设置后,重启ntpd服务systemctl restart ntpd# 用ntpstat来检查效果【大概几秒钟就可以看到效果】ntpstat    # no3 ntp客户端设置# 192.168.0.107 作为ntpclient,将他设置为同步上面的ntpserver,同样需要一个简单配置,分别在两个节点上做如下配置!vi /etc/ntp.confserver 192.168.0.104     #添加此行# server 0.centos.pool.ntp.org iburst           #以下四行注释掉# server 1.centos.pool.ntp.org iburst# server 2.centos.pool.ntp.org iburst# server 3.centos.pool.ntp.org iburst#设置后,重启ntpd服务systemctl restart ntpd# 用ntpstat来检查效果【大概需要等十五分钟,看到效果】ntpstat  # 其他命令# 查看服务为ntp同步信息ntpq -p

网络命令

常用命令


ping 127.0.0.1					# ping命令telnet 127.0.0.1 8080		# telnet命令netstat -an							# netstat命令yum install -y telnet		# 安装telnetyum erase -y telnet			# 卸载telnetecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all		# 禁止ping命令echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all		# 恢复ping命令setup												# 网卡配置ethtool eth0								# 查看网卡信息service network restart		# 重启网卡命令sar -n DEV		# 网络负载,检查网络流量(rxbyt/s, txbyt/s)是否过高netstat -i		# 网络错误,检查是否有网络错误(drop fifo colls carrier),也可以用命令:# cat /proc/net/devnetstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n	# 网络连接数目nc -nzv ip port #测试端口

软件安装

RPM 包

# Fedora, Redhat及类似系统rpm -ivh package.rpm    					#安装一个rpm包rpm -ivh --nodeeps package.rpm   #安装一个rpm包而忽略依赖关系警告rpm -U package.rpm        				#更新一个rpm包但不改变其配置文件rpm -F package.rpm        				#更新一个确定已经安装的rpm包rpm -e package_name.rpm   				#删除一个rpm包rpm -qa      												#显示系统中所有已经安装的rpm包rpm -qa | grep httpd    					#显示所有名称中包含 "httpd" 字样的rpm包rpm -qi package_name    					#获取一个已安装包的特殊信息rpm -qg "System Environment/Daemons"   #显示一个组件的rpm包rpm -ql package_name       							#显示一个已经安装的rpm包提供的文件列表rpm -qc package_name       							#显示一个已经安装的rpm包提供的配置文件列表rpm -q package_name --whatrequires     #显示与一个rpm包存在依赖关系的列表rpm -q package_name --whatprovides			#显示一个rpm包所占的体积rpm -q package_name --scripts						#显示在安装/删除期间所执行的脚本lrpm -q package_name --changelog					#显示一个rpm包的修改历史rpm -qf /etc/httpd/conf/httpd.conf			#确认所给的文件由哪个rpm包所提供rpm -qp package.rpm -l										#显示由一个尚未安装的rpm包提供的文件列表rpm --import /media/cdrom/RPM-GPG-KEY   #导入公钥数字证书rpm --checksig package.rpm      				#确认一个rpm包的完整性rpm -qa gpg-pubkey      								#确认已安装的所有rpm包的完整性rpm -V package_name     								#检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间rpm -Va                 								#检查系统中所有已安装的rpm包- 小心使用rpm -Vp package.rpm     								#确认一个rpm包还未安装rpm2cpio package.rpm | cpio --extract --make-directories *bin*   #从一个rpm包运行可执行文件rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm    							#从一个rpm源码安装一个构建好的包rpmbuild --rebuild package_name.src.rpm       										#从一个rpm源码构建一个 rpm 包

YUM 软件包

# Fedora, RedHat及类似系统yum install package_name             #下载并安装一个rpm包yum localinstall package_name.rpm    #将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系yum update package_name.rpm    				#更新当前系统中所有安装的rpm包yum update package_name        				#更新一个rpm包yum remove package_name        				#删除一个rpm包yum list                   						#列出当前系统中安装的所有包yum search package_name     					#在rpm仓库中搜寻软件包yum clean packages          					#清理rpm缓存删除下载的包yum clean headers           					#删除所有头文件yum clean all                					#删除所有缓存的包和头文件

DEB 包

# Debian, Ubuntu 以及类似系统dpkg -i package.deb     #安装/更新一个 deb 包dpkg -r package_name    #从系统删除一个 deb 包dpkg -l                 #显示系统中所有已经安装的 deb 包dpkg -l | grep httpd    #显示所有名称中包含 "httpd" 字样的deb包dpkg -s package_name    #获得已经安装在系统中一个特殊包的信息dpkg -L package_name    #显示系统中已经安装的一个deb包所提供的文件列表dpkg --contents package.deb #显示尚未安装的一个包所提供的文件列表dpkg -S /bin/ping       #确认所给的文件由哪个deb包提供

APT 软件工具

# Debian, Ubuntu 以及类似系统apt-get install package_name      #安装/更新一个 deb 包apt-cdrom install package_name    #从光盘安装/更新一个 deb 包apt-get update      								#升级列表中的软件包apt-get upgrade     								#升级所有已安装的软件apt-get remove package_name     	#从系统删除一个deb包apt-get check     									#确认依赖的软件仓库正确apt-get clean     									#从下载的软件包中清理缓存apt-cache search searched-package	#返回包含所要搜索字符串的软件包名称

JDK安装


no1 安装包准备

# 解压缩JDK安装包tar –zxvf jdk-7u79-linux-x64.tar.gz

no2-1 全局配置

# 设置环境变量(全局生效) vi /etc/profile# 在文件结尾加上下列三行export JAVA_HOME=/appuser/jdk1.7.0_79export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 启用配置source /etc/profile

no2-2 单目录配置

# 设置环境变量(单文件目录下生效) cd 目录vi ~/.bash_profile# 在文件结尾加上下列三行export JAVA_HOME=/appuser/jdk1.7.0_79export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 启用配置source ~/.bash_profile

no3 安装测试

# 安装测试javac# 版本查看java -version# 查看java路径echo $JAVA_HOME

FTP安装


# 是否已安装服务rpm -qa|grep vsftp# 安装ftp服务yum -y install vsftp# 修改配置文件vi /etc/vsftpd/vsftpd.conf# 修改anonymous_enable=NO# 文件结尾加上userlist_deny=NOlocal_root=/appuser/ftp_dir(指定FTP存放文件路径)# 创建ftp用户名及密码# 增加用户test,并制定test用户的主目录为/home/testuseradd -d /home/test test# 创建/修改密码passwd 用户名# 将创建的用户名加入到FTP白名单vi /etc/vsftpd/user_list# 启动ftpservice vsftpd start# 停止ftpservice vsftpd stop# 重启ftpservice vsftpd restart# 查看ftp状态service vsftpd status

VMtools安装

# no1:进入VM控制台,选中服务器,右键-->客户机-->安装/升级VMtools# no2:通过ssh登录虚拟机,然后切换至root账号su - root# no3:检查磁盘有没有被其他镜像挂在df -h# no4:执行挂载命令mount /dev/cdrom /media# no5:切换目录cd /media# no6:解压文件tar -zxvf VMwareTools-9.4.5-1734305.tar.gz -C /tmp# no7:切换目录cd /tmp/vmware-tools-distrib/# no8:执行安装./vmware-install.pl# no9:一路回车键

Tomcat安装


# 启动./startup.sh # 关闭./shutdown.sh# sh赋权chmod 777 *.sh# 日志打印tail -f logs/catalina.out# 端口占用情况netstat -tln | grep 8060

其他操作

http接口验证


# 网络验证ping 127.0.0.1# 端口验证telnet 127.0.0.1 8080# wget命令wget http://xxxx# curl命令curl http://xxxxcurl "http://127.0.0.1:9999/tet" -H "Content-Type: application/json" -d "{\"a\":\"123\"}" -X POST

日志清理


# find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;# 实例命令:find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;# 说明:# 将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:# find:linux的查找命令,用户查找指定条件的文件;# /opt/soft/log/:想要进行清理的任意目录;# -mtime:标准语句写法;# +30:查找30天前的文件,这里用数字代表天数;# ".log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;# -exec:固定写法;# rm -rf:强制删除文件,包括目录;# {} \; :固定写法,一对大括号+空格++; 

模拟占内存


1、首先使用free -mo -s 2 命令查看系统内存使用量:
2、打开另一个终端编写occupy.c源文件如下:

#include<stdio.h>#include<sys/mman.h>#include<stdlib.h>#include<unistd.h>//要占用100M内存,以字节为单位const int alloc_size = 100*1024*1024;int main(){  char *mem = malloc(alloc_size);  //使用mlock锁定内存  if(mlock(mem,alloc_size) == -1){    perror("mlock");    return -1;  }  //typedef unsigned int size_t  size_t i;  //获得每一个内存页的大小,一般为4K  size_t page_size = getpagesize();  for(i=0;i<alloc_size;i+=page_size){    mem[i] = 0;  }  printf("i = %zd\n",i);  while(1){    sleep(5);  }  return 1;}
# 执行命令:gcc occupy.c -o occupysudo ./occupy

模拟耗CPU


1、新建并编辑文件

#! /bin/sh # filename killcpu.shif [ $# -ne 1 ] ; then  echo "USAGE: $0 <CPUs>|stop"  exit 1;fistop(){ while read LINE  do    kill -9 $LINE    echo "kill $LINE sucessfull"  done < pid.txt cat /dev/null > pid.txt}start(){  echo "u want to cpus is: "$1  for i in `seq $1`do  echo -ne " i=0; while truedoi=i+1; done" | /bin/sh &  pid_array[$i]=$! ;donefor i in "${pid_array[@]}"; do  echo 'pid is: ' $i ';';  echo $i >> pid.txtdone}case $1 in   stop)    stop  ;;   *)   start $1;;esac
# 运行方式:# 启动:./killcpu.sh 1# 停止:killcpu.sh stop

tomcat日志文件 访问IP统计


omcat localhost_access_log.2018-09-19.txt日志文件 访问IP统计

172.16.8.11 - - [19/Sep/2018:12:35:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613172.16.8.1 - - [19/Sep/2018:12:43:08 +0800] "GET /images/loading.gif HTTP/1.1" 200 404172.16.8.1 - - [19/Sep/2018:12:43:08 +0800] "POST /init HTTP/1.1" 200 207172.16.8.1 - - [19/Sep/2018:12:43:12 +0800] "POST /init HTTP/1.1" 200 207172.16.8.1 - - [19/Sep/2018:12:43:16 +0800] "GET / HTTP/1.1" 200 7612172.16.8.1 - - [19/Sep/2018:12:43:16 +0800] "GET /css/default-init.css?1537325099834 HTTP/1.1" 304 -172.16.8.1 - - [19/Sep/2018:12:43:16 +0800] "GET /js/lib/jquery/jquery.min.js HTTP/1.1" 304 -172.16.8.1 - - [19/Sep/2018:12:43:16 +0800] "GET /images/logo.png HTTP/1.1" 304 -172.16.8.11 - - [19/Sep/2018:12:45:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:12:55:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:13:05:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:13:15:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613172.16.8.11 - - [19/Sep/2018:13:25:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613172.16.8.11 - - [19/Sep/2018:13:35:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613172.16.8.11 - - [19/Sep/2018:13:45:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613172.16.8.11 - - [19/Sep/2018:13:55:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:14:05:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:14:15:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:14:25:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:14:35:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7612172.16.8.11 - - [19/Sep/2018:14:45:21 +0800] "GET /console/stat/onlineVisitorRefresh HTTP/1.1" 200 7613

SHELL脚本

[root@localhost logs]# awk '{aaa[$1]++;} END{for(i in aaa) { printf("%s\t%s\n", aaa[i], i); }}' localhost_access_log.2018-09-19.txt | sort -bn2    127.0.0.124    172.16.8.126    172.16.8.11[root@localhost logs]# grep -i -o -E -r -e "([0-9]{1,3}\.){3}[0-9]{1,3}" localhost_access_log.2018-09-19.txt | sort -n | uniq -c | sort -n      2 127.0.0.1     24 172.16.8.1     26 172.16.8.11[root@localhost logs]# awk '{print $1}' localhost_access_log.2018-09-19.txt | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort | uniq -c | sort -g      2 127.0.0.1     24 172.16.8.1     26 172.16.8.11