1.Linux的命令学习1
1.Linux的/etc/group文件
学习这个文件源于构建jenkins镜像的Dockerfile文件时:
ARG dockerGid=999 RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去,
/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:
group_name:passwd:GID:user_list 在/etc/group 中的每条记录分四个字段: 第一字段:用户组名称; 第二字段:用户组密码; 第三字段:GID 第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
所以如上的命令可以解释为:docker为用户组名称,x是密码段,表示没有设置密码,GID为999,组下的用户有jenkins用户
每个用户都属于某个用户组;一个组可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中
记录的是用户所属的主组,也是登录时所属的主组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己称为所要访问的组中的成员。
用户组的所有信息都放在/etc/group当中。
2.linux的echo命令
建立新文件或增加文件内容 格式:ECHO 文件内容>文件名 ECHO 文件内容>>文件名
如下:echo '' > /etc/apt/sources.list.d/jessie-backports.list \ && echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \ && echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \ && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
增加文件同时添加文件内容;echo暂时只用过这个一个用法,以后追加。
3.linux 的apt-get命令
apt-get update 更新软件源中的所有软件列表。
apt-get upgrade 更新软件。
apt-get dist-upgrade 更新系统版本。如果你对新版本软件的需求不是那么迫切,可以不执行
apt-get工作原理简介
众所周知,在linux操作系统下,利用apt-get来安装软件是非常方便的。只要一个sudo apt-get install 软件名;
就可以轻易的解决软件的安装,最关键的是他可以解决其中存在的各种复杂的依赖关系,
让你不用为此头疼,而在apt-get出现之前,利用dpkg或者更早之前的./configure;make;make install来安装软件真是无法想象,
安装完软件A,提示你要安装软件B,好不容易安装完了,又提示要安装软件C
所以说apt这个高级包管理工具极大的方便了广大的linux用户,更降低了linux用户的入门的门槛。好了,零零碎碎说了这么多废话,咱们回归正题。
为了搞清其中原理,我在网上折腾了半天,最后自己摸索了好久,终于有点头绪,
每当执行命令进行软件的安装或着更新,或者软件源的更新时,apt会访问/etc/apt/sources.list内的地址,
并在该网站中找到对应系统的包信息例如我的操作系统是ubuntu,
网站是deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse网易的,
那么当我们执行安装的命令时,他就会对应的访问http://mirrors.163.com/ubuntu/dists/lucid/main/binary-i386/的packages.gz,
这个文件是服务器上软件包及其依赖关系的清单,并且用gzip压缩过了。
apt-get update使用这个清单来确定能够获得哪些补充的软件包且他的内容会被保存在/var/lib/apt/lists内,
通过访问这个lists确定该软件是否已安装,是否是最新版本,依赖关系是否满足,从而确定要更新内容,
并进行更新,其安装过程主要是由dpkg来完成。