每周分享
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
-u
UID: 新UID
-g
GID: 新主组
-G
GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被 覆盖;若保留原有,则要同时使用-a选项
-s
SHELL:新的默认SHELL
-c
'COMMENT':新的注释信息
-d
HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据, 同时使用-m选项
-l
login_name: 新的名字
-L:
lock指定用户,在/etc/shadow 密码栏的增加 !
-U:
unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e
YYYY-MM-DD: 指明用户账号过期日期
-f
INACTIVE: 设定非活动期限
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
-n
group_name: 新名字
-g
GID: 新的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:指定最短使用期限
-x
maxdays:最大使用期限
-w
warndays:提前多少天开始警告
-i
inactivedays:非活动期限
--stdin
:从标准输入接收用户密码
示例:echo "PASSWORD" | passwd --stdin USERNAME
在linux中
/etc/passwd:放用户机器属性信息(名称,uid、主组id等)
/etc/group:放组及其属性信息。
/etc/shadow:放用户密码及其相关属性。
/etc/shadow:放组密码及其相关属性。
*****
另外,值得注意的是,在ubuntu默认不让登录root权限,可以使用普通用户sudo -i 切换到管理权限,输入普通用户的密码。但是这个账号是安装系统是系统给与这个账号的,新建账号没有权限切换root。但是Ubuntu默认root不让远程,只能本地登录。其它账户不能切换账户。