(一)一些新增的命令

 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(文件名为目标文件的名称)

从远处复制文件到本地目录:

scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

上传本地文件到远程机器指定目录:

scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest


(二)linux无法连接服务器原因分析

  1. IP问题,使用ifconfig命令

  2. 网卡是否启动,使用setup命令

  3. Windows下VMware服务是否开启,Windows下运行services.msc,查看VMware Authorization Service和VMware NAT Service

  4. VMware network adapter vmnet8网络配置



(三)补充vim快捷键

  1. 将光标至行尾删除并进入编辑模式:C

  2. 将光标至行尾删除并不进入编辑模式:D

  3. 光标移至行尾并进入编辑模式:A

  4. 删除当前行至文件结尾的内容:dG

  5. 在编辑模式下查找内容:/内容


(四)vim常见故障

用vim编辑文件时,在编辑模式下,突然关闭窗口或断开连接,再次打开该文件时,会报错。

则是因为vim在编辑文件时,会先创建一个.swp临时文件,编辑文件完成后,这个临时文件就会被自动删除。如果未正常关闭,这个临时文件仍然存在。

解决方法:

方法一:如果确认之前的改动已不需保留,则直接删除那个临时文件即可。

方法二:之前的改动仍需保留,使用vim  -r恢复文件,并保存退出即可。再把那个临时文件删除。


(五)定时任务

crond是定时任务的后台服务

  1. crontab  提交和管理用户的定时任务,系统自带无需安装,

  -l:查看当前用户的定时任务

  -e:编辑当前用户的定时任务

  -r:删除用户的定时任务

定时任务格式.png

定时任务常用符号:

*:每

*/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的方式来删除,也可以直接删除目录,注意权限即可。


(七)用户管理

  1. 如何让一个命令或脚本开机自启动呢?

方法一:写入/etc/rc.local

方法二:让脚本被chkconfig管理

将要被管理的脚本放于/etc/init.d/下,且应当具备执行权限,脚本的开头必须加上

chkconfig管理脚本.png

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用户用来授予尚方宝剑的

visudo.png

授权多个命令用,隔开

授权某个目录下所有的命令,但需排除su,rm,vi时,使用!

给管理员自己使用的普通用户授权不需要输入密码:visudo  oldboy  ALL=(ALL)  NOPASSWD:  ALL

实际visudo就是编辑了/etc/sudoers这个配置文件


(八)磁盘知识

磁盘结构.png

raid级别.png

磁盘容量=柱面的大小 * 柱面的数量

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