(一)一些新增的命令
1.ss 可用于显示活动状态的套接字信息 ,他可以显示和netstat类似的内容,但是比netstat更高效,更详细,尤其是当服务器连接的socket数量非常庞大的时候,使用netstat非常慢。
-n:不解析服务名称,以数字显示
-a:显示所有套接字
-l:显示所有处于监听下的套接字
-p:显示使用套接字的进程信息
-i:显示内部的TCP信息
-4:只显示IPv4的套接字
-6:只显示IPV6的套接字
-t:只显示TCP套接字
-u:只显示udp套接字
2.nmap 是一个开源的网络探测和安全审核工具,需要yun安装。参数是域名或IP地址
-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口
实例:nmap www.baidu.com 扫描IP或域名的可用端口
3.Telnet 远程登录主机,但是用的明文,Linux采用更安全的ssh将其替代。
4.lrzsz 可以在Windows系统和Linux中传输文件,也需要安装,支持yum安装。
rz:从Windows上传文件到Linux当前用户的家目录下
sz filename:从Linux下载文件到Windows中
5.zip 压缩解压缩命令,通常被tar命令所替代
6.dd 复制文件并对原文件的内容进行转换和格式化处理。
bs=<字节数>:将输入和输出设成指定的字节数
count=<区块数>:仅读取指定的区块数
of=<文件>:输出文件
if=<文件>:输入文件
7.swapon 激活Linux中的交换空间
-s:显示交换空间的使用情况
-a:将/etc/fstab下面所有设置为swap的设备都启用为交换空间
8.mkswap 在一个文件或设备上建立交换空间
-c:建立之前,检查文件是否有损坏的区块
9.scp 远程拷贝命令,利用ssh协议,传输过程加密。scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
scp(选项)(参数)
-C:使用压缩方式
-o:指定使用ssh的选项
-P:指定远程主机的端口号
-p:保留文件的最后修改时间,最后访问时间和权限模式
-r:采用递归方式
参数: 源文件:指定要复制的源文件。
目标文件:目标文件。格式为
user@host:filename
(文件名为目标文件的名称)
从远处复制文件到本地目录:
上传本地文件到远程机器指定目录:
(二)linux无法连接服务器原因分析
IP问题,使用ifconfig命令
网卡是否启动,使用setup命令
Windows下VMware服务是否开启,Windows下运行services.msc,查看VMware Authorization Service和VMware NAT Service
VMware network adapter vmnet8网络配置
(三)补充vim快捷键
将光标至行尾删除并进入编辑模式:C
将光标至行尾删除并不进入编辑模式:D
光标移至行尾并进入编辑模式:A
删除当前行至文件结尾的内容:dG
在编辑模式下查找内容:/内容
(四)vim常见故障
用vim编辑文件时,在编辑模式下,突然关闭窗口或断开连接,再次打开该文件时,会报错。
则是因为vim在编辑文件时,会先创建一个.swp临时文件,编辑文件完成后,这个临时文件就会被自动删除。如果未正常关闭,这个临时文件仍然存在。
解决方法:
方法一:如果确认之前的改动已不需保留,则直接删除那个临时文件即可。
方法二:之前的改动仍需保留,使用vim -r恢复文件,并保存退出即可。再把那个临时文件删除。
(五)定时任务
crond是定时任务的后台服务
crontab 提交和管理用户的定时任务,系统自带无需安装,
-l:查看当前用户的定时任务
-e:编辑当前用户的定时任务
-r:删除用户的定时任务
定时任务常用符号:
*:每
*/10:每隔10分钟
例:*/10 * * * * /user/sbin/ntpdate pool.ntp.org 命令必须采用绝对路径
-:从哪里到哪里
例:00 07-11 * * * CMD 每个小时运行一次
,:分隔连接符
例:17,19,20 17点,19点,20点
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
2.写完定时任务一定要加注释检查
3.使用脚本代替命令书写定时任务
例:* * * * * /bin/sh /server/scripts/date.sh >>/tmp/date.log
date.sh中存放了date +%F,sh实际是bash的软链接
4.定时任务中%是有特殊含义的,如果非要把命令写进定时任务,必须加转义,所以建议用脚本
5.定时任务中,命令或者脚本的结果(不管正确还是错误)要么定向到黑洞(>/dev/null 2>&1)或追加到文件中,如果不这么做,且未开启邮件服务,那么大量小文件会堆积在/var/spool/postfix/maildrop之中,最后导致inode用尽。如果邮件服务开启了,那么会不停的给用户发邮件。系统的邮件服务:postfix
6.运行脚本一定要用/bin/sh
7.应当避免不必要的程序及命令输出
8.打包压缩应当使用相对路径
9.定时任务脚本中的命令,使用绝对路径
10.系统与命令位置有关的环境变量问题
定时任务运行脚本的时候只能识别的path只有/bin,/usr/bin,这导致了运行某些其它命令时,会因环境变量的问题导致找不到命令,这时就需要在定时任务中临时修改一下环境变量。
11.利用定时任务和logrotate实现对日志文件的轮询和压缩删除等操作
对Linux系统而言,日志是非常重要的文件,它记录了系统所发生的事件,分析日志能够排障以及分析系统性能。日志文件大了之后就必须进行切割,否则不利于归档,查询与读写。
它默认的配置文件在
/etc/logrotate.conf
/etc/logrotate.d/
/etc/logrotate.conf才是主要配置文件,/etc/logrotate.d/是个目录,它里面的文件会被主动读入/etc/logrotate.conf执行。
实际运行时,logrotate会调用logrotate.conf的缺省值。当然,如果/etc/logrotate.d/文件中有自定义值的话,会覆盖logrotate.conf的缺省值。
logrotate是基于cron运行的,脚本位于/etc/cron.daily/logrotate,这样就能全自动每天运行。
(六)如何删除大量小文件
直接使用rm是无法删除的,可以通过 ls|xargs rm的方式来删除,也可以直接删除目录,注意权限即可。
(七)用户管理
如何让一个命令或脚本开机自启动呢?
方法一:写入/etc/rc.local
方法二:让脚本被chkconfig管理
将要被管理的脚本放于/etc/init.d/下,且应当具备执行权限,脚本的开头必须加上
chkconfig --add oldboy 将服务添加进来被chkconfig管理
2.chkconfig管理服务的原理
chkconfig在on或off服务的时候,会创建相应的软链接到对应的命令
S打头表START
K打头表KILL
后面跟着顺序
3.如果某用户的命令解释器是/sbin/nologin,说明这个用户是虚拟用户
4.当出现如下情况时,请问出现的原理与解决方法:
-bash-4.1$
-bash-4.1$
原因是用户下的与环境变量相关的文件被删除了。
方法一:从/etc/skel下把环境变量相关文件复制到当前家目录
方法二:从其它用户那里复制过来
注意:删除操作慎用.*
5.用户管理相关命令
(1)useradd 创建新用户
-c:备注,会被加入/etc/passwd的备注栏中
-u:指定用户id
-s:指定用户所使用的shell
-g:指定用户所属的群组
-M:不创建用户的家目录
实例1:useradd -u 888 -s /sbin/nologin -M alex999 添加一个用户alex999并指定其uid为888,且禁止用户登录系统,还不创建家目录
(2)userdel 删除指定用户
-f:强制删除用户,即使其已登录
-r:删除用户的同时,删除其相关文件(删除前注意备份重要文件)
另一种方法可以在/etc/passwd中将某用户注释掉,比较安全
(3)passwd 设置用户的密码
-d:删除密码,仅root
-l:锁住密码,不让修改
-u:解锁,允许修改密码
非交互式修改用户密码:echo '123456'|passwd --stdin oldboy
(4)su 切换当前用户到其他用户
-s:指定shell
su与su - 的区别:su - 表更换用户时更新系统的环境变量
(5)sudo 以其他用户的身份来执行指令,预设是以root身份
-l:列出当前用户可执行的指令
-s:指定shell
6.如何增强系统的安全性
(1)最小化安装系统
(2)禁止root用户远程登录,修改系统的默认远程登录端口22
(3)给重要的文件创建一个指纹
md5sum 采用md5报文摘要算法计算和检查文件的校验和
--status:验证成功时不输出任何信息
-c filename:从指定文件中读取md5并和要比较的文件校验
实例1:md5sum test>test.md5 输出指纹
md5sum test -c test.md5 检验指纹
7.如果有同事想临时查看只有root用户能查看的文件,该如何是好?
首先肯定不能把root账号给他,风险太大。可以使用授予尚方宝剑的方式。
visudo命令就是root用户用来授予尚方宝剑的
授权多个命令用,隔开
授权某个目录下所有的命令,但需排除su,rm,vi时,使用!
给管理员自己使用的普通用户授权不需要输入密码:visudo oldboy ALL=(ALL) NOPASSWD: ALL
实际visudo就是编辑了/etc/sudoers这个配置文件
(八)磁盘知识
磁盘容量=柱面的大小 * 柱面的数量
1.fdisk 硬盘分区命令
n:创建分区
d:删除分区
p:显示分区信息
q:退出不保存
w:退出保存
2.案例:给/dev/sdb硬盘只创建一个分区,并把它挂载到/mnt/上
(1)创建一个分区:fdisk /dev/sdb
(2)通知系统/dev/sdb硬盘的磁盘分区表发生了变化:partprobe /dev/sdb
(3)格式化创建文件系统:mkfs.ext4 /dev/sdb1
(4)关闭磁盘分区的自动检查功能:tune2fs -c 0 -i 0 /dev/sdb1
-c 0:关闭每挂载多少次就进行磁盘检查的功能
-i 0:关闭每隔180天就进行磁盘检查的功能
(5)进行磁盘分区挂载:mount /dev/sdb1 /mnt
(6)检查:df -h
(7)进行永久挂载(开机时自动挂载)
方法一:编辑/etc/rc.local
方法二:编辑/etc/fstab,将要挂载的内容添加进去
卸载挂载点:umount /mnt
3.parted 由GNU组织开发的一款强大的磁盘分区工具,还支持调整分区的大小。
p:显示磁盘分区
mklabel:创建磁盘分区表
mkpart:创建分区
rm:删除分区
q:退出不保存
4.案例:java环境服务器内存不够,导致大量占用swap空间,怎么办?
(1)创建一个文件块:dd if=/dev/zero of=/tmp/100m bs=1M count=100
(2)把文件块变成swap:mkswap /tmp/100m
(3)swap生效:swapon /tmp/100m
-s:查看swap的组成
(4)让swap永久生效
方法一:编辑/etc/rc.local
方法二:编辑/etc/fstab
/tmp/100m swap swap defaults 0 0