> CentOS > CentOS入门 >

CentOS常用命令之bc、man、shutdown

这篇随笔主要记录下Linux下的bc、man、shutdown等一些命令的用法及含义

一、bc (Linux系统下的一个简单计算器)

在windows系统里,里面自带了一个计算器的工具,我们可以用其进行各种计算,在Linux系统下也有一个简单的计算器功能,我们通过 bc 命令就可以用其来进行一些简单的计算。

[root@itnetcn ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
-->>> 这这里输入我们要进行的一些运算

此时我们就已经进入到了bc这个简单计算器的工作环境中了,在这个简单的计算器下我们可以进行如下的一些简单运算:

+ 加法、- 减法、* 乘法、/ 除法、^ 指数、% 余数

例如:

复制代码
12+15+12
39
12*5
60
10^2
100
10%3
1
10/3
3    -->> 为什么这里只是显示3呢?那是因为bc默认输出的是整数,如果我们要输出小数,还需要执行一个scale命令,例如scale=3,则表示输出三位小数。
复制代码
scale=3
10/3
3.333
quit -> 退出当前的bc计算器命令

这个简单的计算器功能就是这样,通过bc这个命令,我们就可以在Linux系统下进行一些简单的数据运算了。

二、man命令

Linux系统的命令非常非常的多,我们可以在bash下连续按两次[Tab]键,就可以查看当前Linux中所拥有的命令条数,如:

[root@itnetcn ~]# 
Display all 4221 possibilities? (y or n)

我们看到,在我安装的CentOS6.4系统下,一共存在了4221条命令,所以这么多的命令我们都需要记住吗?当然不能这么傻了,就像java的API一样,那么多的类和方法,咱们不可能去每个都记住吧,所以我们如果需要使用某个命令时只需要google一下就行了。至于当我们拿到一个命令后,要如何使用它,这就需要问"男人"(man)了。我们在Linux里面流行了这样一句话,如果不清楚一个命令的具体用法,就要找男人(man)。当然这个man是manual(操作说明)的简写,比如说我们要查看date这个命令的用法,就可以输入 man date 这个命令来进行查看:

复制代码
[root@itnetcn ~]# man date

DATE(1)                          User Commands                         DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display the current time in the given FORMAT, or set the system date.

       -d, --date=STRING
              display time described by STRING, not ‘now’

       -f, --file=DATEFILE
              like --date once for each line of DATEFILE

       -r, --reference=FILE
              display the last modification time of FILE

       -R, --rfc-2822
              output  date  and time in RFC 2822 format.  Example: Mon, 07 Aug

..............................................此处省略几百字.....................................................

DATE STRING
       The --date=STRING is a mostly free format human  readable  date  string
       such  as  "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or
       even "next Thursday".  A date string may contain items indicating  cal-
       endar  date,  time of day, time zone, day of week, relative time, rela-
       tive date, and numbers.  An empty string indicates the beginning of the
       day.   The date string format is more complex than is easily documented
       here but is fully described in the info documentation.

ENVIRONMENT
       TZ     Specifies the timezone, unless overridden by command line param-
              eters.  If neither is specified, the setting from /etc/localtime
              is used.

AUTHOR
       Written by David MacKenzie.

REPORTING BUGS
       Report date bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report date translation bugs to <http://translationproject.org/team/>

COPYRIGHT
       Copyright © 2010 Free Software Foundation, Inc.   License  GPLv3+:  GNU
       GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
       This  is  free  software:  you  are free to change and redistribute it.
       There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
       The full documentation for date is maintained as a Texinfo manual.   If
       the  info  and  date  programs are properly installed at your site, the
       command

              info coreutils 'date invocation'

       should give you access to the complete manual.

GNU coreutils 8.4                  June 2012                           DATE(1
复制代码

这样的话我们就马上可以知道date命令的具体用法了,而且也知道了date这个命令可以添加的一些参数,以及这些参数的信息,对于这个界面,我们将其称作是man page(帮助页)。我们可以看到在输入 man date这个命令后第一行出现了 "DATE(1)",这里的DATE就是命令的名称,(1)在这里表示的是"一般用户可以使用的命令"。对于这个数字,在某些场合对我们还是很有帮助的,Linux的常见数字的含义如下:

                                  常见数字的含义

代号 代表内容
1 使用者在shell环境中可以操作的命令或可运行文件
2 系统核心可呼叫的函数与工具等
3 一些常用的函数(function)与函式库(library),大部分为C的函式库(libc)
4 装置文件的说明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 游戏(games)
7 惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
8 系统管理员可用的管理命令
9 跟kernel有关的文件

在通过输入 man date 命令后,我们发现其输出信息有很多的字段,那么组成man page 的这些字段的含义又是代表什么意思呢?

                                man page 的组成部分

代号 内容说明
NAME 简短的命令、数据名称说明
SYNOPSIS 简短的命令下达语法(syntax)简介
DESCRIPTION 较为完整的说明,这部分最好仔细看看!
OPTIONS 针对 SYNOPSIS 部分中,有列举的所有可用的选项说明
COMMANDS 当这个程序(软件)在运行的时候,可以在此程序(软件)中下达的命令
FILES 这个程序或数据所使用或参考或连结到的某些文件
SEE ALSO 可以参考的,跟这个命令或数据有相关的其他说明!
EXAMPLE 一些可以参考的范例
BUGS 是否有相关的错误!

我们通常需要关注的就是NAME、DESCRIPTION这两个字段,NAME就是代表了该命令的名称,DESCRIPTION就是该命令的一些常见参数及其所代表的意思。我们在man page这个页面进行命令的查询时,通常也有一些常用的按键可以帮助我们:

                                man page 常用的按键

 

按键 进行工作
空格键 向下翻一页
[Page Down] 向下翻一页
[Page Up] 向上翻一页
[Home] 去到第一页
[End] 去到最后一页
/string 向『』搜寻 string 这个字符串,如果要搜寻 date 的话,就输入 /date
?string 向『』搜寻 string 这个字符串
n, N 利 用 / 或 ? 来搜寻字符串时,可以用 n 来继续下一个搜寻 (不论是 / 或 ?) ,可以利用 N 来进行『反向』搜寻。举例来说,我如果以 /date 搜寻 date 字符串, 那么可以 n 继续往下查询,用 N 往上查询。若以 ?date 向上查询 date 字符串, 那我可以用 n 继续『向上』查询,用 N 反向查询。

q

结束这次的 man page

注意:这些常用的按键只能是在man page 这个页面下才能使用。

三、shutdown命令

在之前的随笔中就有记录下Linux系统的关机命令可以是 shutdown -h now ,重启命令可以是 shutdown -r now 或者 reboot,而且关机命令、重启命令只能是root才有权力执行。那么shutdown这个命令的具体语法规则是什么呢?shutdown命令可以实现什么呢?没错,咱们不知道就问 man

复制代码
[root@itnetcn ~]# man shutdown

shutdown(8)          //8就表示该命令是管理员才能执行的命令                                            shutdown(8)

NAME
       shutdown - bring the system down

SYNOPSIS
       shutdown [OPTION]...  TIME [MESSAGE]

OPTIONS
       -r     Requests that the system be rebooted after it has  been  brought
              down.

       -h     Requests  that  the system be either halted or powered off after
              it has been brought down, with the choice as to which left up to
              the system.

       -H     Requests  that  the  system  be halted after it has been brought
              down.

       -P     Requests that the system  be  powered  off  after  it  has  been
              brought down.

       -c     Cancels  a  running  shutdown.   TIME is not specified with this
              option, the first argument is MESSAGE.

       -k     Only send out the warning messages and disable  logins,  do  not
              actually bring the system down.
复制代码

shutdown命令的语法规则为:

复制代码
[root@itnetcn ~]# shutdown [-t 秒] [-arkhncfF] 时间 [警告信息] 
选项与参数: 
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思 
-k     : 不要真的关机,只是发送警告信息出去! 
-r     : 在将系统的服务停掉之后就重新启动(常用) 
-h     : 将系统的服务停掉后,立即关机。 (常用) 
-n     : 不经过 init 程序,直接以 shutdown 的功能来关机 
-f     : 关机并启动之后,强制略过 fsck 的磁盘检查 
-F     : 系统重新启动之后,强制进行 fsck 的磁盘检查 
-c     : 取消已经在进行的 shutdown 命令内容。 
时间   : 这是一定要加入的参数!指定系统关机的时间!时间的范例底下会说明。 
范例: 
[root@itnetcn ~]# shutdown -h 10 'I will shutdown after 10 mins' 
# 告诉大家,这部机器会在十分钟后关机!并且会显示在目前登陆者的屏幕前方! 
复制代码

如果我们需要关机时,比如设定某个时间关机,就必须要加入时间参数,否则此时会自动跳到1级运行级别(就是单用户登陆情况)。

复制代码
[root@itnetcn ~]# shutdown -h now // 咱们平常关机最常用的一个命令
立刻关机,其中 now 相当于时间为 0 的状态 

[root@itnetcn ~]# shutdown -h 23:25 
系统在今天的 23:25 分会关机,若在23:50才下达此命令,则隔天才关机 

[root@itnetcn ~]# shutdown -h +10 
系统再过十分钟后自动关机 

[root@itnetcn ~]# shutdown -r now 
系统立刻重新启动 

[root@itnetcn ~]# shutdown -r +30 'The system will reboot'  
再过三十分钟系统会重新启动,并显示后面的信息给所有在在线的使用者 

[root@itnetcn ~]# shutdown -k now 'This system will reboot'  
仅发出警告信件的参数!系统并不会关机!但是会给出警告信息! 
复制代码

shutdown命令有什么用呢?或者说shutdown命令可以做什么?

  • 可以自由选择关机模式:是要关机、重新启动或进入单用户操作模式均可;
  • 可以配置关机时间: 可以配置成现在立刻关机, 也可以配置某一个特定的时间才关机。
  • 可以自定义关机信息:在关机之前,可以将自己配置的信息传送给在线 user 。
  • 可以仅发出警告信息:有时有可能你要进行一些测试,而不想让其他的使用者干扰, 或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
  • 可以选择是否要 fsck 检查文件系统 。

如果我们需要重启的话,就直接使用 reboot 命令或者 shutdown -r now 即可。

四、sync 命令

这个命令虽然简单,但是还是不得不记录一下。sync命令是将数据同步到磁盘上。

在Linux系统中,为了加快数据的读取速度,在默认的情况中, 某些已经加载内存中的数据将不会直接被写回硬盘,而是先缓存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!

不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的升级不正常啦! 那要怎么办呢?这个时候就需要sync这个命令来进行数据的写入动作啦! 直接在文字接口下输入sync,那么在内存中尚未被升级的数据,就会被写入硬盘中!所以,这个命令在系统关机或重新启动之前, 很重要喔!最好多运行几次!该命令如下:

[root@itnetcn ~]# sync

所以为了保险起见,我们在进行系统关机或者重启之前,最好先多运行几次sync命令,将内存中的数据同步到硬盘中:

[root@itnetcn ~]# sync
[root@itnetcn ~]# sync
[root@itnetcn ~]# sync
[root@itnetcn ~]# shutdown -h now



(责任编辑:IT)