每周分享

1 硬盘分区挂载及命令别名

  一般来说,硬盘分区有两种类型:一种是GPT,但是只支持总分区,现在很多家庭电脑Windows系统都是用这种分区类型;还有一种就是主流的MBR,主分区单块硬盘上只支持4个,如果有其它硬盘可以没有主分区。主分区安装OS。前提OS是安装在激活的主分区,一块硬盘只有一个激活 状态的主分区,在Linux中用(1-4)来表示。扩展分区在一块硬盘上只有一个,不可以直接存放数据,可划分成逻辑分区。逻辑分区是在扩展分区里划分出来的。逻辑分区数字编号必须是在“5”开始划分的。

  一般来说,初建一个系统主分区有“/” “boot” “extend”和放数据的“data”就够用,像虚拟内存swap就放在逻辑分区,一般是swap是内存的二倍,如果生产中内存很大就没必要太大的虚拟内存,8G够用。
例如一块硬盘有200G,我们可以这样划分:

    /dev/sda1 mount /boot 1G (启动)

    /dev/sda2 mount / 100G

    /dev/sda3 mount /data 50G

    /dev/sda4 extend 50G (扩展分区)

    /dev/sda5 swap 2G swap不是文件夹,它就是一个分区。(逻辑分区)。

  一般系统中常见的文件夹有:

    /home放一些用户信息。
/boot放的是系统启动相关。
/etc是放重要设备工具的。
/var/log是放变量的
/dev是存放硬盘之类硬件设备的。
/tmp存放一些临时文件。
/proc 虚拟内存(如果文件夹没有独立挂载硬盘,那么就自动挂载在“/”上,所以装系统时至少分一个硬盘分区给“/”。)

2 命令及别名(alias)

  由于计算机内部是二进制运行的,当用户敲了一个命令,传给一个软件解释给计算机,这个软件就叫shell;shell提供了用户与内核进行交互操作的一种接口;也被称为Linux的命令解释器;同时它 也是一种高级程序设计语言。目前大部分Linux用的是bash;命令echo $SHELL查看当前shell。可以使用命令cat /etc/shells查看当前系统支持的所有shell类型。命令分为内部命令和外部命令type 可以查看是内部还是外部命令。

  当然,一个系统中最重要的就是管理员root啦,root和普通用户的区别是:UID,如果UID为0,就是管理员,其它为普通用户,id -u 可查看当前用户的UID。也可以id -u user 查看其它用户的UID。关于linux有一些刚建好系统很实用的小命令,例如:

    lsb_release -a查看系统版本号。

    uname -r 查看系统内核版本。

    tty 查看当前登录终端设备。

    free -h 查看系统内存大小,以及占用内存大小。其中-h是显示详细信息。

    如果内存占用比较大,由于图形界面比较占内存,init 3关闭图形界面。

    runlevel 查看目前的模式,也可以看到在哪个模式切换过来=who -r。

    init(-0是关机;-6是重启;-5进入图形界面;-3关闭图形界面;-2进入字符界面。)

    enable可以显示所有内部命令,enable -n cmd可以禁用内部命令。不加-n启用命令。同时enable也可以把自己禁用,但是只是临时生效,重启恢复。

    which只是用来查看外部命令的,

    echo $PATH查看外部命令的路径。

    hash 显示缓存命令
hash -r删除所有缓存命令。

*****

  更改命令别名也要写入文档。home目录下的 .bashrc文件里。
alias可以查看所有定义的命令别名。
unalias可以删除别名,当然也要在.bashrc文件里文档删除。
~/.bashrc只对当前用户有效;etc/bashrc对所有用户有效。
如果已经写入文档,不想重启,可以使用.重读别名文档。(其中.等于source)。命令前加"\"可以忽略别名,执行原命令。

**

  命令的执行过程:别名优先,其次是内部命令,再次是hash表内的命令(hash表里面的都是外部命令),最后是$PASH外部命令。如果都没有就会报错。

*****

  本小节中有一个很有趣的就是命令提示符变色。

    PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"更改提示符颜色

    PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"可以另提示符更加的花哨。

    echo $PS1显示提示符格式。(其中u为用户名;h为主机名;w为当前目录;)

  写入磁盘文档可以放入/etc/profile.d/env.sh;其中env.sh(env是环境的意思)是需要自己建的。可以使用nano写入,也可以使用vim。退出重新登陆就ok了。

  • Ubuntu可以使用sudu -i 进入root权限写入文档。nano .bashrc。

3 帮助(man help

  whatis本身是一个外部命令,但是往往一个命令有很多章节,使用whatis cmd直接查看命令的有多少章节,然后直接键入自己需要的章节,例入man # cmd;或者cmd # --help。关于man最好用的就是使用less列表来实现了,space, ^v, ^f, ^F: 向文件尾翻屏 b, ^b: 向文件首部翻屏 d, ^d: 向文件尾部翻半屏 u, ^u: 向文件首部翻半屏 RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行 y or ^Y or ^P or k or ^K:向文件首部翻一行 q: 退出 #:跳转至第#行 1G: 回到文件首部 G:翻至文件尾部

  通过本地文档获取帮助

  
System->help(centos6) Applications -> documentation->help(centos7)提供的官方使用指南和发行注记

  /usr/share/doc目录 多数安装了的软件包的子目录,包括了这些软件的相关原理说明

  常见文档:README INSTALL CHANGES

  适合其它地方的文档的位置 配置文件范例HTML/PDF/PS 格式的文档 授权书详情

  最重要的一句话就是“获取帮助的能力就是技术的能力”

*****

  为了避免进程突然终止,可以运行screen; 如果同一台服务器上两个人,其中一个人有解决不了的 求助人可以运行screen -S name ,然后解决人可以输入screen -x 加对方的名字。解决人可以临时退出CTRL+A+D ,但是并不完全退出。前提是同意服务器同一用户。

4 文件及文件夹的创建,复制,删除和软硬连接

  文件名最长255个字节 包括路径在内文件名称最长4095个字节 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文 件 灰色-->其他文件 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用, 有些字符需要用引号来引用它们 标准Linux文件系统(如ext4),文件名称大小写敏感 例如:MAIL, Mail, mail, mAiL

创建文件

  touch命令 格式:touch [OPTION]... FILE... -a 仅改变 atime和ctime -m 仅改变 mtime和ctime -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳 -c 如果文件不存在,则不予创建 。需要注意的是touch创建新文件会刷新文件修改时间 ,>会覆盖文件。>>创建文件原数据不会丢失,只是追加。> >> 不是命令,touch是外部命令。

创建文件夹

  mkdir 创建目录 -p: 存在于不报错,且可自动创建所需的各目录 -v: 显示详细信息 -m MODE: 创建目录时直接指定权限 。

复制

  cp [OPTION]... [-T] SOURCE DEST

  cp [OPTION]... SOURCE... DIRECTORY

  cp [OPTION]... -t DIRECTORY SOURCE...

  cp SRC DEST SRC是文件: 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中 如果目标存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中 基于安全,建议为cp命令使用-i选项 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容 填充至新文件中 。

  cp SRC... DEST SRC... 多个文件 DEST 必须存在,且为目录,其它情形均会出错

  cp SRC DEST SRC是目录:此时使用选项:-r 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中 如果DEST存在: 如果DEST是文件:报错 ; 如果DEST是目录:缤购。

  cp常用选项
-i 覆盖前提示 -n 不覆盖,注意两者顺序 -r, -R递归复制目录及内部的所有内容 -a 归档,相当于-dR --preserv=all ;-d --no-dereference--preserv=links 不复制原文件,只复制链接名。

移动(Windows剪切)

  mv [OPTION]... [-T] SOURCE DEST

  mv [OPTION]... SOURCE... DIRECTORY

  mv [OPTION]... -t DIRECTORY SOURCE... 常用选项: -i 交互式 -f 强制 -b 目标存在,覆盖前先备份 。

删除

  rm [OPTION]... FILE... 常用选项: -i 交互式; -f 强制删除; -r 递归; --no-preserve-root 删除/ ; 示例: rm -rf /*

软硬连接

  每个文件的节点编号都是唯一 而且可以重复利用的 ,ll -i查看文件的节点编号。 df -i可以查看挂载点可用的节点编号。
硬连接不允许跨分区,用ln file 新链接名称;创建新连接。名字之间互不干扰,删除其中一个不影响文件。
软连接可以跨分区和设备。通过ln -s file newfile来创建。

  软连接如果原始文件要写相对路径的话,要相对于软连接的相对路径,不是当前目录的相对路径。(原始文件相对于软连接,软连接相对于当前目录。)
删除软连接的时候注意后面不要加/,不然它就会删除文件夹里面的内容,应该像删除文件一样。

  硬连接和软连接的区别:硬链接ln 软链接ln -s
1本质:硬连接:同一个文件多个名字,软连接是不同的文件;
2软连接可以跨分区,硬连接不可以;
3链接数,创建软连接不增长连接数,硬连接增长;
4软连接依赖源文件,如果源文件被删除就会报错;
5文件类型不一样,硬连接源文件是什么属性就是什么属性,软连接l开头,属性不同。

5用户和组的权限

用户管理命令 useradd usermod userdel(创建,修改,删除用户)

组帐号维护命令 groupadd groupmod groupdel(创建,修改,删除组)

useradd

  useradd [options] LOGIN
     -u UID;
    -o 配合-u 选项,不检查UID的唯一性 ;
    -g GID 指明用户所属基本组,可为组名,也可以GID ;
    -c"COMMENT“ 用户的注释信息 ;
    -d HOME_DIR 以指定的路径(不存在)为家目录 ;
    -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中 ;
     -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在 ;
    -N不创建私用组做主组,使用users组做主组;
    -r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000 ;
    -m 创建家目录,用于系统用户 ;
    -M不创建家目录,用于非系统用户 。

usermod

  usermod [OPTION] login

    -uUID: 新UID
    -gGID: 新主组

    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被 覆盖;若保留原有,则要同时使用-a选项
    -sSHELL:新的默认SHELL
    -c'COMMENT':新的注释信息
    -dHOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据, 同时使用-m选项
    -l login_name: 新的名字
    -L: lock指定用户,在/etc/shadow 密码栏的增加 !
    -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
    -e YYYY-MM-DD: 指明用户账号过期日期

    -fINACTIVE: 设定非活动期限

userdel

  userdel [OPTION]... login

    -r: 删除用户家目录

groupadd

  groupadd [OPTION]... group_name

    -g GID 指明GID号;[GID_MIN, GID_MAX]

    -r 创建系统组 CentOS 6: ID<500 CentOS 7: ID<1000

groupmod

   groupmod [OPTION]... group

    -ngroup_name: 新名字

    -gGID: 新的GID

groupdel

  groupdel GROUP简单而且粗暴。

chmod(修改权限)

  chmod [OPTION]... OCTAL-MODE FILE...

  -R: 递归修改权限

  chmod [OPTION]... MODE[,MODE]... FILE...

   MODE: 修改一类用户的所有权限

  u= g= o= ug= a= u=,g= 修改一类用户某位或某些位权限

  u+ u- g+ g- o+ o- a+ a- + -

  chmod [OPTION]... --reference=RFILE FILE... 参考RFILE文件的权限,将FILE的修改为同RFILE

passwd(设置密码)

  passwd [OPTIONS] UserName: 修改指定用户的密码

  常用选项:

    -d:删除指定用户密码

    -l:锁定指定用户

    -u:解锁指定用户

    -e:强制用户下次登录修改密码

    -f:强制操作

    -n mindays:指定最短使用期限

    -xmaxdays:最大使用期限

    -w warndays:提前多少天开始警告

    -iinactivedays:非活动期限

    --stdin:从标准输入接收用户密码

      示例:echo "PASSWORD" | passwd --stdin USERNAME

  在linux中
/etc/passwd:放用户机器属性信息(名称,uid、主组id等)
/etc/group:放组及其属性信息。
/etc/shadow:放用户密码及其相关属性。
/etc/shadow:放组密码及其相关属性。

*****

  另外,值得注意的是,在ubuntu默认不让登录root权限,可以使用普通用户sudo -i 切换到管理权限,输入普通用户的密码。但是这个账号是安装系统是系统给与这个账号的,新建账号没有权限切换root。但是Ubuntu默认root不让远程,只能本地登录。其它账户不能切换账户。