Linux常用命令之bc、man、shutdown...
在写这篇随笔时,翻看了一下上一篇随笔的写作日期,发现已经是4月8号了,时间已经过了11天了!!!过了这么久没有更新Linux学习系列的随笔了,是因为我又松懈了Linux的学习了吗?不是的!!!是因为最近这段日子真的是发生了很多事。。。。
造成许久没有更新Linux学习系列随笔的原因:
①4.15-5.3这段时间报名参加了广交会的实习,一共分为三期,基本每期都是工作4天,然后休息4天。。。所以基本只能在放假那几天挤出时间来学习了
②电脑用的太久,里面囤下了太多的灰尘,导致电脑散热非常差,基本上每天开机后不怎么用都会在1小时左右自动关机,不过今天已经将笔记本整个清洁了一次,电脑也终于正常工作了
③最近腾讯开始招聘2013实习生岗位,自己也投递了简历,参加了笔试以及今天上午进行的一面。。。总结一点,自己还真的差很多啊!!!
综合上述原因,使得自己这段时间没有系统的学习Linux,所以Linux学习系列的随笔也就没有更新了,不过现在已经空下来了时间,趁着广交会第一期放假这几天,自己得抓紧时间多学一下,不能松懈了Linux的学习!!!!
纵观之前的14篇Linux学习系列随笔,基本上是学习了Linux的一些常用命令,以及如何在Linux下进行j2ee环境搭建等知识,应该说并没有深入到Linux的学习当中,也没有找一本Linux的书籍来细看,所以从这篇随笔开始,自己准备好好地跟着Linux的书籍或者其他资料来深入的了解、学习Linux。为此,特地从图书馆借来了一本书,这本书应该也是Linux学习的入门书籍了--《鸟哥的Linux私房菜--基础学习篇》,现在就先从基础学习篇开始学习啦,后续还会继续学习服务器篇。。。
所以从本随笔开始,基本上就是通过细读《鸟哥的Linux私房菜--基础学习篇》这本书,来记录下自己学习的一些点点滴滴以及一些心得,如有错误或者好的学习建议,还希望大家能够指出来。。。
这篇随笔主要记录下Linux下的bc、man、shutdown等一些命令的用法及含义
一、bc (Linux系统下的一个简单计算器)
在windows系统里,里面自带了一个计算器的工具,我们可以用其进行各种计算,在Linux系统下也有一个简单的计算器功能,我们通过 bc 命令就可以用其来进行一些简单的计算。
[root@xiaoluo ~]# 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@xiaoluo ~]# Display all 4221 possibilities? (y or n)
我们看到,在我安装的CentOS6.4系统下,一共存在了4221条命令,所以这么多的命令我们都需要记住吗?当然不能这么傻了,就像java的API一样,那么多的类和方法,咱们不可能去每个都记住吧,所以我们如果需要使用某个命令时只需要google一下就行了。至于当我们拿到一个命令后,要如何使用它,这就需要问"男人"(man)了。我们在Linux里面流行了这样一句话,如果不清楚一个命令的具体用法,就要找男人(man)。当然这个man是manual(操作说明)的简写,比如说我们要查看date这个命令的用法,就可以输入 man date 这个命令来进行查看:
[root@xiaoluo ~]# 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@xiaoluo ~]# 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@xiaoluo ~]# shutdown [-t 秒] [-arkhncfF] 时间 [警告信息] 选项与参数: -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思 -k : 不要真的关机,只是发送警告信息出去! -r : 在将系统的服务停掉之后就重新启动(常用) -h : 将系统的服务停掉后,立即关机。 (常用) -n : 不经过 init 程序,直接以 shutdown 的功能来关机 -f : 关机并启动之后,强制略过 fsck 的磁盘检查 -F : 系统重新启动之后,强制进行 fsck 的磁盘检查 -c : 取消已经在进行的 shutdown 命令内容。 时间 : 这是一定要加入的参数!指定系统关机的时间!时间的范例底下会说明。 范例: [root@xiaoluo ~]# shutdown -h 10 'I will shutdown after 10 mins' # 告诉大家,这部机器会在十分钟后关机!并且会显示在目前登陆者的屏幕前方!
如果我们需要关机时,比如设定某个时间关机,就必须要加入时间参数,否则此时会自动跳到1级运行级别(就是单用户登陆情况)。
[root@xiaoluo ~]# shutdown -h now // 咱们平常关机最常用的一个命令 立刻关机,其中 now 相当于时间为 0 的状态
[root@xiaoluo ~]# shutdown -h 23:25 系统在今天的 23:25 分会关机,若在23:50才下达此命令,则隔天才关机
[root@xiaoluo ~]# shutdown -h +10 系统再过十分钟后自动关机
[root@xiaoluo ~]# shutdown -r now 系统立刻重新启动
[root@xiaoluo ~]# shutdown -r +30 'The system will reboot' 再过三十分钟系统会重新启动,并显示后面的信息给所有在在线的使用者
[root@xiaoluo ~]# shutdown -k now 'This system will reboot' 仅发出警告信件的参数!系统并不会关机!但是会给出警告信息!
shutdown命令有什么用呢?或者说shutdown命令可以做什么?
- 可以自由选择关机模式:是要关机、重新启动或进入单用户操作模式均可;
- 可以配置关机时间: 可以配置成现在立刻关机, 也可以配置某一个特定的时间才关机。
- 可以自定义关机信息:在关机之前,可以将自己配置的信息传送给在线 user 。
- 可以仅发出警告信息:有时有可能你要进行一些测试,而不想让其他的使用者干扰, 或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
- 可以选择是否要 fsck 检查文件系统 。
如果我们需要重启的话,就直接使用 reboot 命令或者 shutdown -r now 即可。
四、sync 命令
这个命令虽然简单,但是还是不得不记录一下。sync命令是将数据同步到磁盘上。
在Linux系统中,为了加快数据的读取速度,在默认的情况中, 某些已经加载内存中的数据将不会直接被写回硬盘,而是先缓存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!
不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的升级不正常啦! 那要怎么办呢?这个时候就需要sync这个命令来进行数据的写入动作啦! 直接在文字接口下输入sync,那么在内存中尚未被升级的数据,就会被写入硬盘中!所以,这个命令在系统关机或重新启动之前, 很重要喔!最好多运行几次!该命令如下:
[root@xiaoluo ~]# sync
所以为了保险起见,我们在进行系统关机或者重启之前,最好先多运行几次sync命令,将内存中的数据同步到硬盘中:
[root@xiaoluo ~]# sync [root@xiaoluo ~]# sync [root@xiaoluo ~]# sync [root@xiaoluo ~]# shutdown -h now
本篇随笔主要记录了自己深入学习Linux的一些心得以及体会,后续学习中将会继续记录下自己的学习心得!!!