linux Base
目录
linux Base
gun组织
项目
copyleft:代表无版权。
copyright:代表有版权
opensource:开放源代码、软件谁都可以使用、谁都可以传播、都可二次开发
free:免费
GPL:通用许可证协议,如果软件打上GPL任何人都可对其进行修改,但是修改完以后必须发布出来。
口号:团结就是力量
Linux系统之父:linus Torvalds 林纳斯.托瓦兹
Linux版本
我们现在所说的Linux都是发行版distribution version;就是Linux内核加上各种gun的库文件、应用程序构造而成的操作系统
各版本
Redhat:企业级操作系统
centos:社区企业级操作系统
Ubuntu社区维护,主要做手机系统和电脑桌面系统
以及debian系统等等。。。
指令下达和执行
[dmtsai@study ~]$ command [-options] parameter1 parameter2 ...
指令 选项 参数(1) 参数(2)
-
一行指令中第一个输入的部分绝对是“指令(command)”或“可可执行文件案(例如批次脚本,script)”
-
command 为指令的名称,例如变换工作目录的指令为 cd 等等;
-
中刮号[]并不存在于实际的指令中,而加入选项设置时,通常选项前会带 - 号,例如 -h;有时候会使用选项的完整全名,则选项前带有 -- 符号,例如 --help;
-
parameter1 parameter2.. 为依附在选项后面的参数,或者是 command 的参数;
-
指令, 选项, 参数等这几个咚咚中间以空格来区分,不论空几格 shell 都视为一格。所以空格是很重要的特殊字符!;
-
按下[Enter]按键后,该指令就立即执行。[Enter]按键代表着一行指令的开始启动。
-
指令太长的时候,可以使用反斜线 (\) 来跳脱[Enter]符号,使指令连续到下一行。注意!反斜线后就立刻接特殊字符,才能跳脱!
-
其他:在 Linux 系统中,英文大小写字母是不一样的。举例来说, cd 与 CD 并不同。
ls这个指令列出自己的主文件夹(区分大小写)
-
几个基本且好玩,有用的指令
-
显示时间与日期的指令:dat
-
显示日历的指令: cal
[dmtsai@study ~]$ cal [month] [year]
-
简单好用的计算机: bc
如果要输出小数点下位
数,那么就必须要执行 scale=number ,那个number就是小数点位数 -
查询帮助的:help/man
-
-
几个热键
[Tab], [ctrl]-c, [ctrl]-d``[Tab]
接在一串指令的第一个字的后面,则为“命令补全”;
接在一串指令的第二个字以后时,则为“文件补齐”!
若安装bash-completion
软件,则在某些指令后面使用 [tab] 按键时,可以进行“选项/参数的补齐”功能!
善用[tab]
按键真的是个很好的习惯!可以让你避免掉很多输入错误的机会!
[ctrl]-c
:让当前的程序“停掉”的
[ctrl]-d
:键盘输入结束(End Of File, EOF 或 End Of Input)”的意思! 另外,他也可以用来取代exit的输入呢!例如你想要直接离开命令行,可以直接按下[Ctrl]-d就能够直接离开了(相当于输入exit啊!)
错误信讯息的察看
[dmtsai@study ~]$ DATE
bash: DATE: command not found... # 这里显示错误的讯息
Similar command is: 'date' # 这里竟然给你一个可能的解决方案耶!
上面的bach:表示的是我们的shell的名称,上面例子的错误bash会告诉你出现了什么错误:
command not found
出现这种情况可能原因是这条指令不存在或者你打错了。
-
man(man page) 指令详情
[dmtsai@study ~]$ man date DATE(1) User Commands DATE(1) # 请注意上面这个括号内的数字 NAME <==这个指令的完整全名,如下所示为date且说明简单用途为设置与显示日期/时间 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. Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING <==左边-d为短选项名称,右边--date为完整选项名称 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format. TIMESPEC='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision. ....(中间省略).... # 找到了!下面就是格式化输出的详细数据! FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中间省略).... ENVIRONMENT <==与这个指令相关的环境参数有如下的说明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. EXAMPLES <==一堆可用的范本 Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(中间省略).... DATE STRING <==上面曾提到的 --date 的格式说明! 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 calendar date, time of day, time zone, day of AUTHOR <==这个指令的作者啦! Written by David MacKenzie. COPYRIGHT <==受到著作权法的保护!用的就是 GPL 了! Copyright © 2013 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 <==这个重要,你还可以从哪里查到与date相关的说明文档之意 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.22 June 2014 DATE
表格的第一行,你可以看到的是:“DATE(1)”,DATE我们知道是指令的名
称, 那么(1)代表什么呢?他代表的是“一般使用者可使用的指令”的意思!咦!还有这个用
意啊!呵呵! 没错~在查询数据的后面的数字是有意义的喔!他可以帮助我们了解或者是直
接查询相关的数据。 常见的几个数字的意义是这样的:
1 | 使用者在shell环境中可以操作的指令或可可执行文件 |
---|---|
2 | 系统核心可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协定等,例如Linux文件系统、网络协定、ASCII code等等的说明 |
8 | 系统管理员可用的管理指令 |
9 | 跟kernel有关的文件 |
上表中的1, 5, 8这三个号码特别重要,也请读者要将这三个数字所代表的意义背下来喔!
man page的内容也分成好几个部分来加以介绍该指令呢!就是上头man date那个表格内, 以NAME作为开始介绍,最后还有个SEE ALSO来作为结束。基本上,man page大致分成下面这几个部分:
NAME | 简短的指令、数据名称说明 |
---|---|
SYNOPSIS | 简短的指令下达语法(syntax)简介 |
DESCRIPTION | 较为完整的说明,这部分最好仔细看看! |
OPTIONS | 针对SYNOPSIS部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以再此程序(软件)中下达的指令 |
FILES | 这个程序或数据所使用或者参考或链接到的某些文件 |
SEE ALSO | 可以参考的,跟这个指令或者数据有相关的其他说明 |
EXAMPLE | 一些可以参考的范例 |
空白键 | 向下翻一页 |
/string | 向“下”搜寻 string 这个字串,如果要搜寻 vbird 的话,就输入 /vbird |
?string | 向“上”搜寻 string 这个字串 |
n,N | 利用 / 或 ? 来搜寻字串时,可以用 n 来继续下一个搜寻 (不论是 / 或 ?) ,可以利用 N 来进行“反向”搜寻。举例来说,以 /vbird 搜寻 vbird 字串, 那么可以 n 继续往下查询,用 N 往上查询。若以 ?vbird 向上查询 vbird 字串, 那可以用 n 继续“向上”查询,用 N 反向查询。 |
q | 结束这次的 man page |
-
上述表格说明
有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与
DESCRIPTION等部分。 通常鸟哥在查询某个数据时是这样来查阅的:-
先察看NAME的项目,约略看一下这个数据的意思;
-
再详看一下DESCRIPTION,这个部分会提到很多相关的数据与使用时机,从这个地方可以学到很多小细节呢;
-
而如果这个指令其实很熟悉了(例如上面的date),那么鸟哥主要就是查询关于OPTIONS的部分了! 可以知道每个选项的意义,这样就可以下达比较细部的指令内容呢!
-
最后,再看一下,跟这个数据有关的还有哪些东西可以使用的?举例来说,上面的SEE ALSO就告知我们还可以利用“info coreutils date”来进一步查阅数据;
-
某些说明内容还会列举有关的文件(FILES 部分)来提供我们参考!这些都是很有帮助的!
-
如何关机
最大的问题是,若不正常关机,则可能造成文件系统的毁损 (因为来不及将数据回写
到文件中,所以有些服务的文件会有问题!)。所以正常情况下,要关机时需要注意下面几
件事:
-
观察系统的使用状态: 如果要看目前有谁在线上,可以下达“who”这个指令,而如果要看网络的连线状态,可以下达 “ netstat -a ”这个指令,而要看背景执行的程序可以执行“ ps -aux ”这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!当然啰,就可以让你判断是否可以关机了 (这些指令在后面Linux常用指令中会提及喔!)
-
通知线上使用者关机的时刻: 要关机前总得给线上的使用者一些时间来结束他们的工作,所以,这个时候你可以使用 shutdown 的特别指令来达到此一功能。
-
正确的关机指令使用: 例如 shutdown 与 reboot 两个指令!所以下面我们就来谈一谈几个与关机/重新开机相关的指令啰!
-
将数据同步写入硬盘中的指令: sync
我们谈到过数据在计算机中运行的模式, 所有的数据都得要被读入内存后才能够被CPU所处理,但是数据又常常需要由内存写回硬盘当中(例如储存的动作)。 由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入/读出,系统的性能就不会太好。因此在Linux系统中,为了加快数据的读取速度,所以在默认的情况中, 某些已经载入内存中的数据将不会直接被写回硬盘,而是先暂存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!
不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机(例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,哇!所以就会成数据的更新不正常啦! 那要怎么办呢?这个时候就需要sync这个指令来进行数据的写入动作啦! 直接在命令行下输入sync,那么在内存中尚未被更新的数据,就会被写入硬盘中!所以,这个指令在系统关机或重新开机之前, 很重要喔!最好多执行几次!
虽然目前的 shutdown/reboot/halt 等等指令均已经在关机前进行了 sync 这个工具的调用,不过,多做几次总是比较放心点~呵呵~
[dmtsai@study ~]$ su - # 这个指令在让你的身份变成 root !下面请输入 root 的密码! Password: # 就这里!请输入安装时你所设置的 root 密码! Last login: Mon Jun 1 16:10:12 CST 2015 on pts/0 [root@study ~]# sync
事实上sync也可以被一般帐号使用喔!只不过一般帐号使用者所更新的硬盘数据就仅有自己的数据,不像root可以更新整个系统中的数据了
-
惯用的关机指令: shutdown
由于Linux的关机是那么重要的工作,因此除了你是在主机前面以实体终端机 (tty1~tty7) 来登陆系统时, 不论用什么身份都能够关机之外,若你是使用远端管理工具(如通过pietty使用ssh服务来从其他计算机登陆主机), 那关机就只有root有权力而喔!
嗯!那么就来关机试试看吧!我们较常使用的是shutdown这个指令,而这个指令会通知系统内的各个程序 (processes),并且将通知系统中的一些服务来关闭。shutdown可以达成如下的工作:
-
可以自由选择关机模式:是要关机或重新开机均可;
-
可以设置关机时间: 可以设置成现在立刻关机, 也可以设置某一个特定的时间才关机。
-
可以自订关机讯息:在关机之前,可以将自己设置的讯息传送给线上 user 。
-
可以仅发出警告讯息:有时有可能你要进行一些测试,而不想让其他的使用者干扰,或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
简单的语法规则
[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告讯息] 选项与参数: -k : 不要真的关机,只是发送警告讯息出去! -r : 在将系统的服务停掉之后就重新开机(常用) -h : 将系统的服务停掉后,立即关机。 (常用) -c : 取消已经在进行的 shutdown 指令内容。 时间 : 指定系统关机的时间!时间的范例下面会说明。若没有这个项目,则默认 1 分钟后自动进行。 范例: [root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' Broadcast message from root@study.centos.vbird (Tue 2015-06-02 10:51:34 CST): I will shutdown after 10 mins The system is going down for power-off at Tue 2015-06-02 11:01:34 CST!
执行完这个指令之后,十分钟后机子关机,可以输入“shutdown -c“取消本次指令,如果什么参数都没有输入则默认为一分钟之内关机
[root@study ~]# shutdown -h now 立刻关机,其中 now 相当于时间为 0 的状态 [root@study ~]# shutdown -h 20:25 系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机 [root@study ~]# shutdown -h +10 系统再过十分钟后自动关机 [root@study ~]# shutdown -r now 系统立刻重新开机 [root@study ~]# shutdown -r +30 'The system will reboot' 再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者 [root@study ~]# shutdown -k now 'This system will reboot' 仅发出警告信件的参数!系统并不会关机啦!吓唬人!
-
-
重新开机,关机: reboot, halt, poweroff
还有三个指令可以进行重新开机与关机的任务,那就是reboot, halt, poweroff。 其实这三个指令调用的函数库都差不多,所以当你使用“man reboot”时,会同时出现三个指令的用法给你看呢。 其实鸟哥通常都只有记poweroff与reboot这两个指令啦!一般鸟哥在重新开机时,都会下达如下的指令喔:
[root@study ~]# sync; sync; sync; reboot
既然这些指令都能够关机或重新开机,那他有没有什么差异啊?基本上,在默认的情况下,
这几个指令都会完成一样的工作!(全部的动作都是去调用 systemctl 这个重要的管理命
令!) 所以,你只要记得其中一个就好了!重点是,你自己习惯即可!更多功能去man一下
[root@study ~]# halt # 系统停止~屏幕可能会保留系统已经停止的讯息! [root@study ~]# poweroff # 系统关机,所以没有提供额外的电力,屏幕空白!
-
实际使用管理工具 systemctl 关机
如果你是个老手,那么一定会知道有个名为 init 的指令,这个指令可以切换不同的执行等级~ 执行等级共有 0~6 七个,其中 0 就是关机、6 就是重新开机等等。不过,这个init目前只是一个相容模式而已~ 所以在 CentOS 7 当中,虽然你依旧可以使用“ init 0 ”来关机,但是那已经跟所谓的“执行等级”无关了!
那目前系统中所有服务的管理是使用哪个指令呢?那就是 systemctl 啦!这个指令相当的复杂!我们会在很后面系统管理员部份才讲的到! 目前你只要学习 systemctl 当中与关机有关的部份即可。要注意,上面谈到的 halt, poweroff, reboot, shutdown 等等,其实都是调用这个
systemctl 指令的喔! 这个指令跟关机有关的语法如下:
[root@study ~]# systemctl [指令] 指令项目包括如下: halt 进入系统停止的模式,屏幕可能会保留一些讯息,这与你的电源管理模式有关 poweroff 进入系统关机模式,直接关机没有提供电力喔! reboot 直接重新开机 suspend 进入休眠模式 [root@study ~]# systemctl reboot # 系统重新开机 [root@study ~]# systemctl poweroff # 系统关机
-
Linux系统关机/重启是很重大的系统运行,因此只有root才能够进行。