Linux中的几个命令详解

·whoami

        功能:用来显示当前系统用户是谁

        Linux中的几个命令

·who

        功能:显示当前登录到系统上的用户是谁以及它所登录的终端

        Linux中的几个命令

        ->who命令显示三个字段:

            第一个字段:表示用户名称

            第二个字段:表示的是用户从哪个终端登录进来的

            第三个字段:表示用户的登录时间

·终端的概念:

        终端是一个物理设备,用户在登录系统的时候一定会关联至某个物理硬件设备,这个物理硬件设备就叫做终端。

        对我们的Linux操作系统而言终端类型有以下几种:

        ->console(控制台):直接连接到物理主机上的物理设备,比如键盘,显示器,鼠标等等,控制台不是终端,它只是能够直接连接到物理设备上的显示界面,因为此时还没有用户登录,还没有用户的相关概念。

        ->pty(物理终端:physical terminal):终端指的是用户可以登录的,可以验证用户身份的物理设备,所以终端是软件和硬件的结合体,因为能够使用户登录系统的,可以验证用户身份的只有软件或者是进程,当我们的系统刚刚启动的时候,我们的显示器上就可以显示出来很多信息,此时这些信息是属于某个用户的,没有用户就无法关联至某个终端,此时的这个终端叫做物理控制台,此时的终端叫做物理终端,附加在VGA(显卡)卡上,在显示器上显示出来,物理终端指的是我们的设备已经被识别出来,但此前仍然和用户没有关联,通常情况下,控制台指的就是物理终端,物理终端指的就是控制台,大多数情况下二者不予区分。

        ->tty#(虚拟控制台,#表示第#个虚拟控制台):

            虚拟控制台通常指的是附加在某个物理终端上的,并结合软件的方式模拟或虚拟出来的控制台,故称为虚拟控制台或模拟控制台,而且通常是在本地,大多数情况下被称为虚拟终端,附加在VGA卡上,在显示器上显示出来。

            下图所示就是虚拟终端:

            Linux中的几个命令

        ->ttyS#(串行终端,不附加在显卡上)

        ->pts/#(伪终端):

            在文件系统上生成的伪终端。

            下图所示就是伪终端:

            Linux中的几个命令

    who命令的一些常用选项:

        ->-r选项:显示当前用户在系统上的的运行级别

            Linux中的几个命令

        ->-H选项:可以分别显示who命令三个字段的名称

            Linux中的几个命令

·练习:用命令实现

            查看hadoop是否登录到系统上来

            Linux中的几个命令

·练习:写一个脚本,要求

            每隔5秒钟,就来查看hadoop用户是否登录了系统,如果登录了,就显示其已经登录,并退出脚本,否则就显示其还没有登录系统

        脚本内容:

        Linux中的几个命令

        脚本执行结果:

        Linux中的几个命令

·w命令

        功能:显示当前登录到系统上的用户,并显示这些用户正在做什么事情

             比who命令显示的信息更详细

        Linux中的几个命令·last命令

        功能:显示当前系统上的登录日志,显示都有谁曾经登录过系统,还有重启系统的历史

        ->last命令其实是用来显示/var/log/wtmp文件内容的命令,这个文件的内容包括了用户的登录历史及系统的重启历史

        Linux中的几个命令

    Linux中的几个命令

        ->last显示的是系统自安装之初到现在所有的信息,而我们可以利用last -n #选项来显示最近#次的信息

        Linux中的几个命令

·lastb(bad)命令

        功能:显示系统自安装支出起到现在,所有用户的错误登录尝试

        Linux中的几个命令

        lastb命令其实是用来显示/var/log/btmp这个文件内容的命令,这个文件记录的内容就是,系统自安装之初起所有用户的错误登录尝试

        Linux中的几个命令

        ->lastb -n #:用来显示最近#次的错误登录尝试。

        Linux中的几个命令

·lastlog命令

        功能:显示当前系统上每一个用户最近一次的登录信息,不管用户有没有登录过系统,它都会显示相关信息

        Linux中的几个命令

        ->lastlog -u username:显示系统上某用户最近一次的登录信息

        Linux中的几个命令

·basename命令

        功能:直接取得路径基名(文件名)

        Linux中的几个命令

        特殊变量->$0

            执行脚本时的脚本路径及名称

           Linux中的几个命令

·mail命令

        ->mail命令用于打开自己的邮箱系统,在我们装完操作系统之后,默认的绝大多数情况下,系统默认的安装都会安装邮件服务,因为我们当前的操作系统上都会有很多的自动任务需要处理,这些自动任务的功能是监控你系统上资源的使用状况,比如说你的硬盘是不是快满了等等,如果你的硬盘快满了的话,系统就会自动向你的管理员或者是用户发一封邮件,告诉你你的硬盘快满了,所以说系统内部的通信或者是警告信息都是通过邮件来发送的,所以当前系统上的每一个用户都是可以收发邮件的,而且都会有自己的邮箱,收发邮件的命令就是mail,但是只能在本机上不同的用户之间进行邮件的发送

         在我们利用mail命令进入邮箱系统之后,上面显示的N(New)表示新邮件,底下的数字1表示第一封邮件,依次类推,后面接下来的信息分别显示的是邮件的发送者 发送时间、以及邮件主题, 要想查看某个邮件的内容,可以直接输入邮件的数字编号:

        Linux中的几个命令

       ->mail命令用来查看邮件,但是如果邮件全部查看完成,可以只用q键退出邮箱,之前的邮件会被保存在/var/spool/mail/目录下的以用户名字命名的文件里面

        Linux中的几个命令

        ->mail命令也可以用来发送邮件

        用法格式:mail username

            Linux中的几个命令

            Linux中的几个命令

            mail -s "..."可以用来指定发送邮件的主题:mail -s "..." username

·练习:将/etc/fatab文件的内容发送给hadoop用户

        Linux中的几个命令

·练习:使用输入重定向,将/etc/fstab文件的内容发送给test用户

       Linux中的几个命令 

    Linux中的几个命令

·hostname命令

        功能:显示当前主机的主机名(实时显示)

        Linux中的几个命令

        也可以利用echo $HOSTNAME实现显示主机名的功能,只不过不是实时显示

        Linux中的几个命令

        ->$HOSTNAME为Linux操作系统上的一个环境变量,用于保存当前主机的主机名,保存的是当前登录系统的用户的主机名

        可以利用hostname命令更改主机名:

            格式->hostname 主机名

            Linux中的几个命令

·练习:用命令实现

        1,如果当前主机的主机名不是www.magedu.com,就把它改成www.magedu.com

            Linux中的几个命令

        2,如果当前主机的主机名是localhost,就把它改为www.magedu.com

            Linux中的几个命令

        3,如果当前主机的主机名为空或者为(none)或者为localhost,就把它改为www.magedu.com

             Linux中的几个命令     

            上图中的-z指的是字符测试中的一个选项,功能是测试一个字符串是否为空

·生成随机数的命令

        $RANDOM是我们系统上的一个环境变量,里面保存着0-32768之间的随机数。

        ->是由软件模拟生成的一个我们系统上的随机数生成器,只能用作测试使用,而不能用作软件加密使用

        Linux中的几个命令

    我们Linux系统上有两类随机数生成器

        它们是两个设备,只不过是由软件模拟产生的

        在说随机数生成器之前,让我们先来说一说我们系统上的随机数是如何产生的

        ->我们的系统在维护上有一个熵池,随时保留着当前系统上的随机数,随机数其实就是我们手指敲击键盘的时间间隔,对服务器而言,由于服务器没有连接键盘,它会把某些硬件的中断请求的时间间隔当做随机数存储在熵池中,当我们需要用到随机数的时候,系统会自动到熵池中去取,随机数是直接被取走了,而不是复制的,所以随机数不会有重复,而且熵池也有可能被取空,此时我们可以通过频繁的敲击键盘来继续产生随机数供我们使用

        Linux中的几个命令

        接下来我们再来说说我们系统上的两类随机数产生器->

        1,/dev/random

        Linux中的几个命令

        2,/dev/urandom

        Linux中的几个命令

        random和urandom默认都在熵池中取随机数,如果熵池被取空,random会自动阻塞,等待你填充随机数,但是urandom会通过软件模拟的方式再次生成随机数,从而不会阻塞用户的进程,所以说urandom更好用,但是random更安全

·练习:写一个脚本,要求

        利用RANDOM环境变量生成10个随机数,并找出其中的最大值和最小值。

        脚本内容:

        Linux中的几个命令

        我们脚本内容的8行之所以要这么做的原因是$RANDOM中生成的随机数最小为0,所以不可能有比0还小的数出现,这样做的目的是提前给MIN一个值,否则,我们无法得到最小值,MIN永远都会是0,echo -n的意思是不换行输出

        脚本执行结果:

        Linux中的几个命令