0%

循序渐进学Docker - 读书笔记

第1章 全面认识Docker

Docker使用容器引擎解决平台依赖问题,它在每台宿主机上都启动一个Docker的守护进程,守护进程屏蔽了与具体平台相关的信息,对上层应用提供统一的接口。

Java曾提出 Write once, Run anywhere,而Docker提出了 Build once, Run anywhere, Run anything

所以docker的含义就是管理软件部署的应用,把应用打包成一个镜像,镜像带有版本控制功能,每次的修改迭代都对应一个版本,制作好的镜像可以发布到镜像库,供别人使用。

第2章 初步体验Docker

第3章 Ubuntu下使用Docker

Docker是在Ubuntu下诞生和发展的,所以Docker的最新特性都是在Ubuntu下开发和测试的,所以Ubuntu是支持Docker最好的操作系统。

不过现在Docker支持各大主流操作系统,作为生产环境,还是使用REHL或者CentOS,红帽系列正合我意。

这里需要注意的是,如果不希望每次都输入sudo命令,需要把用户user加入到docker组中,命令如下:

1
$ sudo usermod -aG docker user

其中user为用户名,重启就可以生效了。

参考sameersbn/docker-gitlab来了解如何搭建gitlab的docker环境。

第4章 Docker的基础知识

第5章 Docker容器管理

第6章 Docker镜像管理

第7章 Docker仓库管理

第8章 Docker网络和存储管理

第9章 Docker项目日常维护

第10章 Docker Swarm容器集群

第11章 Docker插件开发

第12章 Docker离线系统应用案例

第13章 Etcd、Cadvisor和Kubernetes实践

第14章 构建Docker高可用及自动发现架构实践

第15章 Docker Overlay Network实践

第16章 Docker源码探索

积极牵头组织国际大科学计划和大科学工程方案

积极牵头组织国际大科学计划

和大科学工程方案

积极提出并牵头组织国际大科学计划和大科学工程是党中央、国务院作出的重大决策部署。为做好组织实施工作,制定本方案。

一、重要意义

国际大科学计划和大科学工程(以下简称大科学计划)是人类开拓知识前沿、探索未知世界和解决重大全球性问题的重要手段,是一个国家综合实力和科技创新竞争力的重要体现。牵头组织大科学计划作为建设创新型国家和世界科技强国的重要标志,对于我国增强科技创新实力、提升国际话语权具有积极深远意义。

(一)牵头组织大科学计划是解决全球关键科学问题的有力工具。大科学计划以实现重大科学问题的原创性突破为目标,是基础研究在科学前沿领域的全方位拓展,对于推动世界科技创新与进步、应对人类社会面临的共同挑战具有重要支撑作用。牵头组织大科学计划有利于发挥我国主导作用,为解决世界性重大科学难题贡献中国智慧、提出中国方案、发出中国声音,提供全球公共产品,为世界文明发展作出积极贡献。

(二)牵头组织大科学计划是聚集全球优势科技资源的高端平台。牵头组织大科学计划,有利于面向全球吸引和集聚高端人才,培养和造就一批国际同行认可的领军科学家、高水平学科带头人、学术骨干、工程师和管理人员,形成具有国际水平的管理团队和良好机制,打造高端科研试验和协同创新平台,带动我国科技创新由跟跑为主向并跑和领跑为主转变。

(三)牵头组织大科学计划是构建全球创新治理体系的重要内容。开展大科学计划在优化全球科技资源布局、完善创新治理体系中扮演重要角色,已成为国际科技创新合作的重要议题。牵头组织大科学计划作为科技外交的重要途径,有利于建立以合作共赢为核心的新型国际关系和构建全球伙伴关系网络,对落实国家整体外交战略发挥积极作用。

二、总体要求

(一)指导思想。

全面贯彻党的十九大精神,以习近平新时代中国特色社会主义思想为指导,落实全国科技创新大会精神,统筹推进“五位一体”总体布局和协调推进“四个全面”战略布局,牢固树立和贯彻落实创新、协调、绿色、开放、共享的发展理念,按照《国家创新驱动发展战略纲要》总体要求和外交总体布局,坚持中方主导、前瞻布局、分步推进、量力而行的整体思路,以全球视野谋划科技开放合作,深入落实“一带一路”倡议,遵循共商共建共享原则,积极牵头组织实施大科学计划,着力提升战略前沿领域创新能力和国际影响力,打造创新能力开放合作新平台,推进构建全球创新治理新格局和人类命运共同体,为建设创新型国家和世界科技强国提供有力支撑,为中国特色大国外交作出重要贡献。

(二)基本原则。

国际尖端,科学前沿。适应大科学计划基础性、战略性和前瞻性特点,聚焦国际科技界普遍关注、对人类社会发展和科技进步影响深远的研究领域,选择能够在国际上引起广泛共鸣的项目,力求攻克重大科学问题。

战略导向,提升能力。落实建设世界科技强国“三步走”战略,服务于科技创新和经济社会发展整体战略需要,集聚国内外优秀科技力量,形成一批具有国际影响力的标志性科研成果,全面提升我国科技创新实力。

中方主导,合作共赢。发挥我国在大科学计划核心专家确定、研究问题提出、技术路线选择、科技资源配置、设施选址等问题上的主导作用,尊重各国及各方的优势特长,坚持多国多机构共同参与、优势互补,采取共同出资、实物贡献、成立基金等方式,共享知识产权,实现互利共赢。

创新机制,分步推进。借鉴国际先进经验,注重在大科学计划发起、组织、建设、运行和管理等方面进行系统创新,完善科技资源合作及共享机制,吸引部门、地方共同参加,加强科技界与产业界协作,试点先行,充分论证,根据实施条件成熟一个、启动一个。

(三)主要目标。

总体目标:通过牵头组织大科学计划,在世界科技前沿和驱动经济社会发展的关键领域,形成具有全球影响力的大科学计划布局,开展高水平科学研究,培养引进顶尖科技人才,增强凝聚国际共识和合作创新能力,提升我国科技创新和高端制造水平,推动科技创新合作再上新台阶,努力成为国际重大科技议题和规则的倡导者、推动者和制定者,提升在全球科技创新领域的核心竞争力和话语权。

近期目标:到2020年,培育3—5个项目,研究遴选并启动1—2个我国牵头组织的大科学计划,初步形成牵头组织大科学计划的机制做法,为后续工作探索积累有益经验。

中期目标:到2035年,培育6—10个项目,启动培育成熟项目,形成我国牵头组织的大科学计划初期布局,提升在全球若干科技领域的影响力。

远期目标:到本世纪中叶,培育若干项目,启动培育成熟项目,我国原始科技创新能力显著提高,在国际科技创新治理体系中发挥重要作用,持续为全球重大科技议题作出贡献。

三、重点任务

(一)制定战略规划,确定优先领域。

根据《国家创新驱动发展战略纲要》等部署,结合当前战略前沿领域发展趋势,立足我国现有基础条件,综合考虑潜在风险,组织编制牵头组织大科学计划规划,围绕物质科学、宇宙演化、生命起源、地球系统、环境和气候变化、健康、能源、材料、空间、天文、农业、信息以及多学科交叉领域的优先方向、潜在项目、建设重点、组织机制等,制定发展路线图,明确阶段性战略目标、资金来源、建设方式、运行管理等,科学有序推进各项任务实施。

(二)做好项目的遴选论证、培育倡议和启动实施。

立足我国优势特色领域,根据实施条件成熟度和人力财力保障等情况,遴选具有合作潜力的若干项目进行重点培育,发出相关国际倡议,开展磋商与谈判,视情确定启动实施项目。要加强与国家重大研究布局的统筹协调,做好与“科技创新2030—重大项目”等的衔接,充分利用国家实验室、综合性国家科学中心、国家重大科技基础设施等基础条件和已有优势,实现资源开放共享和人员深入交流。

(三)建立符合项目特点的管理机制。

依托具有国际影响力的国家实验室、科研机构、高等院校、科技社团,通过科研机构间合作或政府间合作等模式,整合各方资源,组建成立专门科研机构、股份公司或政府间国际组织进行大科学计划项目的规划、建设和运营。积极争取把新组建的政府间国际组织总部设在中国。每个大科学计划可成立项目理事会和专家咨询委员会,对项目实施作出决策部署和提供专业化咨询建议。

(四)积极参与他国发起的大科学计划。

继续参与他国发起或多国共同发起的大科学计划,积极承担项目任务,深度参与运行管理,积累组织管理经验,形成与我国牵头组织的大科学计划互为补充、相互支撑、有效联动的良好格局。积极参加重要国际组织的大科学计划相关活动,主动参与大科学计划相关国际规则的起草制定。

四、组织实施保障

(一)加强组织领导和协调管理。

在国家科技计划(专项、基金等)管理部际联席会议机制下,召开牵头组织大科学计划专题会议,由科技部、国家发展改革委、教育部、工业和信息化部、财政部、农业部、国家卫生计生委、国家知识产权局、中科院、工程院、自然科学基金会、国家国防科工局、中央军委装备发展部、中央军委科学技术委员会和中国科协等部门和单位参加,统筹和审议大科学计划的战略规划、发展方向、领域布局、重点任务、项目启动、运行管理机制、知识产权管理和开放共享政策等。

成立由科技界、工程界、产业界等高层次专家组成的大科学计划专家咨询委员会,对大科学计划的优先领域、战略规划、项目论证等进行咨询评审,为国家决策提供参考。战略规划和项目设置等重大事项,经国家科技体制改革和创新体系建设领导小组审议后,按程序报国务院,特别重大事项报党中央。

(二)建立多元化投入和管理机制。

完善财政投入机制,充分利用现有资源和资金渠道,更好发挥财政资金在我国牵头组织大科学计划过程中的引导作用,吸引地方、企业、外国及国际组织的投入。根据实际需求,测算和编制项目经费概算,鼓励社会资本参与,建立多元化投入机制。充分借鉴国际经验,通过有偿使用、知识产权共享等多种方式,吸引国内外政府、科研机构、高等院校、科技社团、企业及国际组织等参与支持大科学计划的建设、运营及管理。

(三)加强高水平专业人才队伍建设。

实施更加积极开放的高层次人才引进政策,依托国家重大人才工程培养和引进大科学计划所需人才,建立支持相关人员参与大科学计划的激励机制。探索建立与国际接轨的全球人才招聘制度,公开招聘世界一流科学家、国际顶尖工程技术人才。加强我国牵头组织大科学计划多层次专业人才队伍建设,构建可持续发展的人才梯队。

(四)建立大科学计划监督评估机制。

建立健全监督评估与动态调整机制,定期对大科学计划的执行情况与成效进行跟踪检查,并将监督评估结果作为项目目标、技术路线、研究任务、预算、进度等调整的重要依据。监督评估结果和调整建议及时报国务院。

GNU Automake 版本(version 1.16.1, 26 February 2018)

Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover texts,
and with no Back-Cover Texts. A copy of the license is included in
the section entitled “GNU Free Documentation License.”

4 两个例子小程序


本章讲两个例子,一个是假定一个工程已经使用Autoconf来处理并手工编写 Makefile,现在切换到 Automake来处理;第二个例子是如何从同一套源码中使用不同的参数编译出两个程序。

4.1 简单小程序,几步就搞定


假定我们已经完成了一个软件zardoz,使用Autoconf提供一个可扩展的框架,不过 Makefile.in是专门另行准备的,现在为了完善这部分工作,我们转而使用Automake。.

第一步就是更新configure.ac,在AC_INIT之后添加AM_INIT_AUTOMAKE

 AC_INIT([zardoz], [1.0])
 AM_INIT_AUTOMAKE
 ...

此时还需要重新生成 configure文件,在此之前需要告诉 autoconf如何找到新的使用宏。最简单的方法是使用aclocal生成 aclocal.m4

1
2
$ aclocal
$ autoconf

接下来就要编写文件Makefile.am了,下面的内容说明我们要安装在bin目录,还指定了源码并且还有一个Texinfo文档。

1
2
3
4
bin_PROGRAMS = zardoz
zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c

info_TEXINFOS = zardoz.texi

最后使用automake --add-missing就可以生成Makefile.in 了,赞。

4.2 一套源码编译两套可执行程序


OK来看第二个例子,这个例子展示了如何从相同的源码true.c通过不同的cpp参数生成两个程序 (truefalse) 。

1
2
3
4
5
6
7
8
9
bin_PROGRAMS = true false
false_SOURCES =
false_LDADD = false.o

true.o: true.c
$(COMPILE) -DEXIT_CODE=0 -c true.c

false.o: true.c
$(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c

注意例子里面没有 true_SOURCESAutomake会自动假定源码名为 true.c,编译为 true.o 并链接到
true,规则段true.o: true.c 会覆盖默认由 Automake 产生的,使用新的一些规则。

false_SOURCES 置为空,因为没有相应的源码,所以我们需要告诉 Automake 它是如何编译链接的。false_LDADD 给出了方案。

如果编译器不能同时支持 -c-o,上面的这个文件可能不会工作,此时我们就需要变通一下,使用下面的文件解决:

1
2
3
4
5
true.o: true.c false.o
$(COMPILE) -DEXIT_CODE=0 -c true.c

false.o: true.c
$(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o

上面是比较有技巧的处理方法,刚开始的操作,还是希望尽量简化,简单,易于理解,如下所示:

1
2
3
4
5
6
7
bin_PROGRAMS = false true

false_SOURCES = true.c
false_CPPFLAGS = -DEXIT_CODE=1

true_SOURCES = true.c
true_CPPFLAGS = -DEXIT_CODE=0

gitlab服务器迁移

新换了服务器,需要将原来服务器商的gitlab项目迁移到新的服务器上.

1.迁移准备工作和思路:从a服务器迁移到b服务器,由于Gitlab自身的兼容性问题,高版本的Gitlab无法恢复低版本备份的数据,需要注意在b服务器部署和a服务器一样版本的gitlab,部署好环境后开始备份和数据迁移.

查看gitlab版本的命令:

1
gitlab-rake gitlab:env:info
  1. 备份原a服务器上的的数据
1
gitlab-rake gitlab:backup:create RAILS_ENV=production

PS: 备份后的文件一般是位于/var/opt/gitlab/backups下, 自动生成文件名文件名如1481529483_gitlab_backup.tar

  1. 将步骤2生成的tar文件拷贝到b服务器上相应的backups目录下
    可以利用scp进行直接拷贝.
1
scp username@src_ip:/var/opt/gitlab/backups/xxxxxxxxxx_yyyy_mm_dd_gitlab_backup.tar /var/opt/gitlab/backups

PS: username为原服务器的用户名,src_ip原服务器IP地址

  1. 在b服务器恢复数据
1
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=xxxxxxxxxx_yyyy_mm_dd_

PS:BACKUP的时间点必须与原服务器备份后的文件名一致

gitlab启动

1
2
3
$ gitlab-ctl reconfigure

$ gitlab-ctl restart

gitlab 仓库的存储地址

1
$ ls /var/opt/gitlab/git-data/repositories

gitlab 手动备份

1
$ gitlab-backup create

阳野道子-好大的苹果

是谁,在暗地里悄悄地看着我们呢?

几次过后,哈哈大笑。。

本书来自作者吃苹果时的随意想象,讲述了一个大大的苹果从树上掉下来,小鸟看见了开心地吃起来,随后相继引来兔子、松鼠、老鼠、蝴蝶、虫子们来吃。大大的苹果变成了苹果芯,最后由蚂蚁搬走了分着吃。这么一个大苹果,大家都吃得好开心。这是一个非常温馨动人的故事,画面讲究细节,却又简单好玩,作者还暗藏玄机,让读者去发现与惊喜。

GNU Automake 版本(version 1.16.1, 26 February 2018)

Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover texts,
and with no Back-Cover Texts. A copy of the license is included in
the section entitled “GNU Free Documentation License.”

3 Automake的设计理念


本节主要讲讲Automake是如何工作的。

3.1 一般操作


Automake 读取Makefile.am 并生成文件Makefile.in

Makefile.am定义的变量和规则会指导Automake生成相关的代码。

比如bin_PROGRAMS 变量定义了如何编译连接的规则。

Makefile.am 大部分定义的变量和规则会拷贝到生成的文件。

GNU make支持追加操作符 +=

Automake在解析时并不是特别聪明,所以最好不要编写一些奇形怪状的语句。

特别是最好不要使用 <TAB> ,如果使用很多复杂的宏也会引起诸多问题:

 % cat Makefile.am
 $(FOO:=x): bar
 % automake
 Makefile.am:1: bad characters in variable name '$(FOO'
 Makefile.am:1: ':='-style assignments are not portable

Automake 也支持下面的书写方法:

 xs = a.c b.c
 foo_SOURCES = c.c $(xs)

它将使用 a.c, b.cc.c 来代替foo_SOURCES.

Automake 也支持#开头的注释,如果以 ##开头,那么将被Automake忽略,不显示在输出中。

比如一般Makefile.am的第一行可以写成:

1
## Process this file with automake to produce Makefile.in

3.2 限定级别


Automake用于 GNU packages的维护,所以可能根据不同的需求有了一些标准,有些标准可能并不适合所有的开发人员,这里说一下三种限定级别:

foreign
Automake只检查一些必须的文件,比如标准的GNU是需要 NEWS 文件的,而这个选项就不强制,建议新手使用。

gnu
​ Automake的默认级别,会尽可能多地检查,建议极大程度上匹配GNU标准的高手使用。

gnits
​ Automake检查是否与Gnits标准一致,虽然该标准还没有定下来,所以这个暂时没有必要。

3.3 统一的命名方案


Automake变量遵循一个统一的命名方案是的很容易决定程序是如何编译和安装的。

决定 automake 什么需要编译的通常称为primary,比如称为 PROGRAMSprimary决定了一系列将编译和链接的程序。

primary 还有一个前缀,用于决定安装到什么路径。这个可以参考GNU的编码标准,比如bindir简写为bin,其中的dir省略掉。

所有应该写成bin_PROGRAMS,而不是bindir_PROGRAMS

标准目录并不一定满足我们的需求,这时就可以通过自定义参数来解决,比如:我们将把 file.xml 安装到
$(datadir)/xml.

 xmldir = $(datadir)/xml
 xml_DATA = file.xml

前缀 noinst_ 将编译但是不安装,这个参数多用于编译其他包需要目标文件的时候,比如编译创建静态库或者帮助脚本。

前缀 check_ 只有在 make check 的时候才编译,但是不安装。

目前的 primary 由: PROGRAMS, LIBRARIES, LTLIBRARIES,LISP, PYTHON, JAVA, SCRIPTS, DATA, HEADERS, MANSTEXINFOS

一些primaries 还有一些附加前缀用于控制 automake 的行为,比如:dist_, nodist_, nobase_notrans_

3.4 命令行长度不要过长


大部分的类unix系统对命令行参数和环境变量都有长度限制,详细的可以参考http://www.in-ulm.de/~mascheck/various/argmax/ ,这个在 make的时候也存在,所以我们可以采用下述策略:

 data_DATA = file1 ... fileN fileN+1 ... file2N

改写为:

 data_DATA = file1 ... fileN
 data2dir = $(datadir)
 data2_DATA = fileN+1 ... file2N

3.5 变量是如何命名的


命名中除了字母、数组和@符号,其他的都会转换为下划线。比如程序命名为 sniff-glue,最后的变量名为 sniff_glue_PROGRAMS,而不是 sniff-glue_PROGRAMS,再比如一个库 libmumble++.a将被更改为 libmumble___a_SOURCES

其中@符号的保留主要是为了防止后续Autoconf在变量替换时出现问题。

3.6 Variables reserved for the user


Some Makefile variables are reserved by the GNU Coding Standards for
the use of the “user”—the person building the package. For instance,
CFLAGS is one such variable.

Sometimes package developers are tempted to set user variables such
as CFLAGS because it appears to make their job easier. However, the
package itself should never set a user variable, particularly not to
include switches that are required for proper compilation of the
package. Since these variables are documented as being for the package
builder, that person rightfully expects to be able to override any of
these variables at build time.

To get around this problem, Automake introduces an automake-specific
shadow variable for each user flag variable. (Shadow variables are not
introduced for variables like CC, where they would make no sense.)
The shadow variable is named by prepending AM_ to the user variable’s
name. For instance, the shadow variable for YFLAGS is AM_YFLAGS.
The package maintainer—that is, the author(s) of the Makefile.am and
configure.ac files—may adjust these shadow variables however
necessary.

3.7 automake可能需要的一些软件包


Automake在生成Makefile 的时候并非单兵作战,它在为了支持多个操作系统的路上需要一帮好朋友软件来支持。如下:

ar-lib:提供给微软的一个lib归档包装器

compile 方便不能同时接受参数选项 -c 和​ -o 的编辑器,

config.guess
config.sub
​ These two programs compute the canonical triplets for the given
​ build, host, or target architecture. These programs are updated
​ regularly to support new architectures and fix probes broken by
​ changes in new kernel versions. Each new release of Automake comes
​ with up-to-date copies of these programs. If your copy of Automake
​ is getting old, you are encouraged to fetch the latest versions of
​ these files from https://savannah.gnu.org/git/?group=config
​ before making a release.

depcomp
​ This program understands how to run a compiler so that it will
​ generate not only the desired output but also dependency
​ information that is then used by the automatic dependency tracking
​ feature

install-sh
​ This is a replacement for the install program that works on
​ platforms where install is unavailable or unusable.

mdate-sh
​ This script is used to generate a version.texi file. It examines
​ a file and prints some date information about it.

missing
​ This wraps a number of programs that are typically only required by
​ maintainers. If the program in question does not exist, or seems to
​ old, missing will print an informative warning before failing
​ out, to provide the user with more context and information.

mkinstalldirs
​ This script used to be a wrapper around mkdir -p, which is not
​ portable. Now we prefer to use install-sh -d when configure
​ finds that mkdir -p does not work, this makes one less script to
​ distribute.
​ For backward compatibility mkinstalldirs is still used and
​ distributed when automake finds it in a package. But it is no
​ longer installed automatically, and it should be safe to remove it.

py-compile
​ This is used to byte-compile Python scripts.

test-driver
​ This implements the default test driver offered by the parallel
​ testsuite harness.

texinfo.tex
​ Not a program, this file is required for make dvi, make ps and
make pdf to work when Texinfo sources are in the package. The
​ latest version can be downloaded from
https://www.gnu.org/software/texinfo/.

ylwrap
​ This program wraps lex and yacc to rename their output files.
​ It also ensures that, for instance, multiple yacc instances can
​ be invoked in a single directory in parallel.

解压命令之一 gzip

.. _linux-beginner-gzip:

:ref:unzip<linux-beginner-unzip>

gzip用于对后缀为gz文件进行解压:

1
$ gzip -d data.gz

这个命令将解压examplefile.gz,并且在当前目录下生成一个名为data的解压后的文件。

但特别需要留意的是,这个操作会删除源文件,会删除源文件,会删除源文件

所以如果你想保留原始压缩文件,一定记得使用-k选项:

1
$ gzip -dk data.gz

这会保留原始的data.gz文件,并生成一个解压后的data文件。

linux 之uname命令

Linux uname命令用于打印系统信息。

uname 可显示电脑、操作系统、发行版本等等信息。

官方的定义为:

uname - print system information

使用的方法为:

1
$ uname [OPTION]...

常用的一些选项为:

  • -a, --all:打印全部的信息
  • -s, --kernel-name:打印内核名
  • -n, --nodename:打印网络节点hostnme,即主机名
  • -r, --kernel-release:打印内核发行版
  • -v, --kernel-version:打印内核版本
  • -m, --machine:打印机器的硬件名字
  • -p, --processor:打印processor或者unknown
  • -i, --hardware-platform:打印硬件平台或者“unknown”
  • -o, --operating-system:打印操作系统

一些实例

显示系统信息,这个基本足矣

1
2
$ uname -a
Linux localdomain 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

显示计算机类型:

1
2
$ uname -m
x86_64

显示计算机名:

1
2
$ uname -n
locaodomain

显示操作系统发行编号:

1
2
$ uname -r
3.10.0-1160.36.2.el7.x86_64

显示操作系统名称:

1
2
$ uname -s
Linux

显示系统版本与时间:

1
2
$ uname -v
#1 SMP Wed Jul 21 11:57:15 UTC 2020

SEE ALSO
arch(1), uname(2)

linux 之uname命令

Linux uname命令用于打印系统信息。

uname 可显示电脑、操作系统、发行版本等等信息。

官方的定义为:

uname - print system information

使用的方法为:

1
$ uname [OPTION]...

常用的一些选项为:

  • -a, --all:打印全部的信息
  • -s, --kernel-name:打印内核名
  • -n, --nodename:打印网络节点hostnme,即主机名
  • -r, --kernel-release:打印内核发行版
  • -v, --kernel-version:打印内核版本
  • -m, --machine:打印机器的硬件名字
  • -p, --processor:打印processor或者unknown
  • -i, --hardware-platform:打印硬件平台或者“unknown”
  • -o, --operating-system:打印操作系统

一些实例

显示系统信息,这个基本足矣

1
2
$ uname -a
Linux localdomain 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

显示计算机类型:

1
2
$ uname -m
x86_64

显示计算机名:

1
2
$ uname -n
locaodomain

显示操作系统发行编号:

1
2
$ uname -r
3.10.0-1160.36.2.el7.x86_64

显示操作系统名称:

1
2
$ uname -s
Linux

显示系统版本与时间:

1
2
$ uname -v
#1 SMP Wed Jul 21 11:57:15 UTC 2020

SEE ALSO
arch(1), uname(2)

解压命令之一 unzip

.. _linux-beginner-unzip:

Linux unzip命令用于解压缩zip文件。

官方的定义为:

unzip - list, test and extract compressed files in a ZIP archive

基本命令

1
$ unzip file.zip

unzip 只需在命令后跟上要解压的文件名,如 file.zip,将该压缩文件解压缩到当前目录。

指定目录解压

如果需要指定解压缩的目标目录,可以使用 -d 参数:

1
$ unzip archive.zip -d /path/where/to/extract

这样就会把压缩文件解压到指定的目录中。

不解压某些文件

如果压缩的文件巨大,而不想解压其中的某些,可以用下面的命令

1
$ unzip file.zip -x data

这个命令的意思为,解压file.zip,但是不把里面的data解压。