Linux学习

Linux

zza@zza:~/表示用户zza在主机zza上

虚拟机

1.虚拟机网络配置

在虚拟机设置中的网络适配器中有三个选项:桥接模式,NAT模式和Host-only(仅主机)模式。

  1. 桥接模式:虚拟机利用真实网卡跟当前真实计算机通信,配置简单,局域网内如果还有同网段的其他计算机,它也可以直接访问。但是占用网段ip。

  2. NAT模式:通过VMnet8这块假网卡跟你的真实计算机通信,跟局域网内其它计算机就不能通信。不用占用真实网段ip地址。如果本机可以访问互联网,那么虚拟机也可以访问互联网。

  3. Host-only(仅主机)模式:通过VMnet1这块假网卡跟你的真实计算机通信,跟局域网内其它计算机就不能通信。不用占用真实网段ip地址。只能和本机通信。

Linux中可以使用ifconfig命令查看ip地址。设置Linux的ip地址:ifconfig eth0 192.168.1.156,更改之后只是临时生效,重启电脑之后,ip地址是会丢失的。要永久改变ip地址,需要改变配置文件中的ip设置。

Windows中可以使用ipconfig命令查看ip地址。

2.SecureCRT远程连接管理工具

SecureCRT:远程连接管理工具

SecureFX:文件传输工具

Winscp:文件传输工具

SecureCRT安装

SecureCRT无法连接Ubuntu

SecureFX显示乱码

使用df命令(英文全拼:disk free) 用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

-h选项,通过它可以产生可读格式的df命令的输出:

注意事项:

  1. Linux是严格区分大小写的。

  2. Linux中所有内容以文件形式保存,包括硬件:

    硬盘文件是/dev/sd[a-p]

    光盘文件是/dev/sr0

  3. Linux不靠扩展名区分文件类型

    压缩包:*.gz、*.bz2、*.tar.bz2、*.tgz等

    二进制软件包:.rmp

    网页文件:*.html、*.php

    脚本文件:*.sh

    配置文件:*.conf

    这些扩展名只是为了帮助管理员直观的管理系统,知道这个是什么文件,管理员就知道用什么命令,而不用一个一个去试。即使没有这些扩展名,系统也知道这些文件是什么文件类型!

  4. Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘。

 

4 Linux常用命令

命令格式

命令格式:命令 [-选项] [-参数]

例:ls -la /etc

说明:1. 个别命令使用不遵循此格式

2.当有多个选项时,可以写在一起

3.简化选项等于完整选项

 

4.1 文件处理命令

目录处理命令:ls

命令名称:ls,list

功能描述:显示目录文件

命令所在路径:/bin/ls

执行权限:所有用户

语法:ls 选项[-ald] [文件或目录]

-a 等于 --all:显示所有文件,包括隐藏文件

-l 等于 --long(长格式):显示详细信息

-h 等于 -human:以人性化方式显示信息

-d 等于 -directory:查看指定目录的详细信息(属性)

-i 等于 inode(i节点):查看文件的i节点

使用-l显示详细信息:

-rw-r--r--. 1 root root 138 Oct 14 00:08 sos.conf

drwxr-xr-x. 2 root root 225 Apr 1 17:34 ssh

-rw-r--r--

文件类型(-:二进制文件;d:目录;l:软链接文件)

rw- r-- r-- r读,w写,x执行

u g o u所有者,g所属组,o其他人

 

 

目录处理命令:mkdir

命令名称:mkdir,make directories

功能描述:创建新目录

命令所在路径:/bin/mkdir

执行权限:所有用户

语法:mkdir -p [目录名]

-p :递归创建,在一个不存在的目录下再创建一个子目录。/tmp是存在的,而/code是不存在的,要在不存在的/code 目录下再创建/c和/java就要使用-p。

mkdir -p /tmp/code/c /tmp/code/java

 

目录处理命令:mkdir

命令名称:cd,change directory

功能描述:切换目录

命令所在路径:shell内置命令

执行权限:所有用户

语法:cd [目录]

cd /tmp/code/c 切换到指定目录

cd .. 回到上级目录

 

目录处理命令:pwd

命令名称:pwd,print working directory

功能描述:显示当前目录

命令所在路径:/bin/pwd

执行权限:所有用户

语法:pwd

 

文件处理命令:rmdir

命令名称:rmdir,remove empty directories

功能描述:删除目录

命令所在路径:/bin/rmdir

执行权限:所有用户

语法:rmdir [目录名]

rmdir /tmp/code/c

 

目录处理命令:cp

命令名称:cp,copy

功能描述:复制文件或目录

命令所在路径:/bin/cp

执行权限:所有用户

语法:cp -rp [原文件或目录] [目标目录]

-r :复制目录

-p :保留文件属性

还可以复制多个文件或目录,只要最后写上目标目录即可:

cp -rp /code/c /code/java /home

还可以再复制的时候更改文件名

cp -r /code/c /home/php

 

目录处理命令:mv

命令名称:mv,move

功能描述:剪切文件、改名

命令所在路径:/bin/mv

执行权限:所有用户

语法:mv [原文件或目录] [目标目录]

也是可以剪切多个文件或目录

 

目录处理命令:rm

命令名称:rm,remove

功能描述:删除文件

命令所在路径:/bin/rm

执行权限:所有用户

语法:mv -rf [文件或目录]

-r :删除目录

-f 等于 force强制执行

 

文件处理命令:touch

命令名称:touch

功能描述:创建空文件

命令所在路径:/bin/touch

执行权限:所有用户

语法:touch [文件名]

 

文件处理命令:cat

命令名称:cat

功能描述:显示文件内容

命令所在路径:/bin/cat

执行权限:所有用户

语法:cat [文件名]

-n :显示行号

cat -n /etc/issue

 

文件处理命令:tac

命令名称:tac

功能描述:显示文件内容(反向列示)

命令所在路径:/usr/bin/tac

执行权限:所有用户

语法:tac [文件名]

tac /etc/issue

 

文件处理命令:more

命令名称:more

功能描述:分页显示文件内容

命令所在路径:/bin/more

执行权限:所有用户

语法:more [文件名]

(空格)或f :翻页

(Enter) :换行

q或Q :退出

more /etc/services

 

文件处理命令:less

命令名称:less

功能描述:分页显示文件内容

(可上下翻页(行),可输入 / 进行查找,按n(next)查找下一个)

命令所在路径:/usr/bin/less

执行权限:所有用户

语法:less [文件名]

 

文件处理命令:head

命令名称:head

功能描述:显示文件前面几行

命令所在路径:/usr/bin/head

执行权限:所有用户

语法:head [文件名]

-n :指定行数,不写n的话默认前10行

head -n 20 /etc/services

 

文件处理命令:tail

命令名称:tail

功能描述:显示文件后面几行

命令所在路径:/usr/bin/tail

执行权限:所有用户

语法:tail [文件名]

-n :指定行数,不写n的话默认前10行

-f :动态显示文件末尾内容,可用于监控日志

tail -n 20 /etc/services

 

文件处理命令:ln

命令名称:ln,link

功能描述:生成链接文件

命令所在路径:/bin/ln

执行权限:所有用户

语法:ln -s [原文件] [目标文件]

-s :创建软链接

创建文件/etc/issue的软链接/tmp/issue.soft

ln -s /etc/issue /tmp/issue.soft

创建文件/etc/issue的硬连接/tmp/issue.hard

ln /etc/issue /tmp/issue.hard

软链接特征:类似Windows快捷方式

  1. lrwxrwxrwx

    l:软链接

    所有者、所属组、其他人都可以读写执行

    但是这个文件的权限不决定源文件的权限,最终的文件权限取决于源文件的权限。

  2. 文件大小(很小)-只是符号链接

  3. /tmp/issue.soft -> /etc/issue 箭头指向源文件

 

硬链接特征:

  1. 拷贝cp -p + 同步更新

    echo "www.baidu.com" >> /etc/issue

  2. 通过i节点识别

    硬连接和源文件的i节点是一样的;而软链接则不一样。可以用ls -i命令查看

  3. 不能跨分区,软链接可以

  4. 不能针对目录使用,软链接可以

 

4.2 权限管理命令

4.2.1 权限管理命令chmod(文件所有者和管理员root)

命令名称:chmod,change the permissions mode of a file

功能描述:改变文件或目录权限

命令路径:/bin/chmod

执行权限:所有用户

语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421] [文件或目录]

-R 递归修改

赋予文件所有者执行权限:chmod u+x test.conf

chmod g-r test.conf

chmod g=rwx,o-r test.conf

权限的数字表示:

r --- 4

w --- 2

x --- 1

rwxrw-r--

7 6 4

chmod 764 test.conf

文件目录权限总结
代表符号权限对文件的含义对目录的含义
r 读权限 可以查看文件内容。cat/more/head/tail/less 可以列出目录中的内容。 ls
w 写权限 可以修改文件内容。 vim 可以在目录中创建、删除文件。 touch/mkdir/rmdir/rm
x 执行权限 可以执行文件。 script(脚本)/command(命令) 可以进入目录。 cd

 

添加一个普通用户

 useradd 用户名
 passwd 用户名
 #输入密码
 例如:
 useradd wood
 passwd wood
 Newpassword:1234
 Retype new password:1234

删除用户

 userdel -r 用户名

 

4.2.2 其他权限管理命令

权限管理命令:chown(管理员root)

命令名称:chown,change file ownership

功能描述:改变文件或目录的所有者

命令路径:/bin/chown

执行权限:所有用户

语法:chown [用户] [文件或目录]

改变文件test的所有者为zza,要在管理员root用户下才可以修改

chown zza test

 

权限管理命令:chgrp(管理员root)

命令名称:chgrp,change file group ownership

功能描述:改变文件或目录的所属组

命令路径:/bin/chgrp

执行权限:所有用户

语法:chgrp [用户] [文件或目录]

改变文件test的所属组为zza,要在管理员root用户下才可以修改

chgrp zza test

 

权限管理命令:umask

命令名称:chgrp,the user file-creation mask

功能描述:显示、设置文件的缺省权限

命令路径:Shell内置命令

执行权限:所有用户

语法:umask [-S]

-S 以rwx形式显示新建文件缺省权限

umask -S

 

4.3 文件搜索命令

文件搜索命令:find

命令名称:find

功能描述:文件搜索

命令路径:/bin/find

执行权限:所有用户

语法:find [搜索范围] [匹配条件]

1. find /etc -name init

find /etc -name *init* :搜索包含init字母的所有文件,*是通配符,匹配任意字符

find /etc -name init??? :?匹配单个字符

在目录/etc中查找文件init

-iname 不区分大小写

 

2. find / -size +204800

在根目录下查找大于100MB的文件

+n 大于 -n 小于 n 等于

数据块是Linux中存储文件的最小单位,一个数据块是512字节(0.5K),而100MB=102400K=204800数据块。

 

3. find /home -user zza

在家目录下查找所有者为zza的文件

-group 根据所属组查找

 

4.find /etc -cmin -5

在/etc下查找5分钟内被修改过属性的文件和目录

-amin 访问时间 access

-cmin 文件属性 change

-mmin 文件内容 modify

 

5. find /etc -size +163840 -a -size -204800

在/etc下查找大于80MB小于100MB的文件

-a 两个条同时满足(and)

-o 两个条件满足任意一个即可(or)

 

6. find /etc -name inittab -exec ls -l {} \;

在/etc下查找inittab文件并显示其详细信息

-exec/-ok 命令 {}\; 对搜索结果执行操作

-exec/-ok两个输入一个即可,-ok会询问

命令表示要执行的操作命令

{}表示find查找的结果,因为find查找的结果不一定只有一个

\表示转义符

;表示结束符

 

7. find /etc -name init* -a -type f -exec ls -l {} \;

-type 根据文件类型查找

f 文件 d 目录 l 软链接文件

 

8. find . -inum 33683657 -exec rm {} \;

-inum 根据i节点查找(可用于查找硬链接

其他文件搜索命令

文件搜索命令:locate

命令名称:locate

功能描述:在文件资料库中查找文件

命令路径:/usr/bin/locate

执行权限:所有用户

语法:locate 文件名

-i :不区分大小写

locate inittab

刚创建的文件可以用updatedb命令更新文件资料库,但是存放临时文件的目录并不在文件资料库的收录范围之内,所以locate是没有办法找到这个目录下的文件的。

 

文件搜索命令:which

命令名称:which

功能描述:搜索命令所在目录及别名信息

命令路径:/usr/bin/which

执行权限:所有用户

语法:which 命令

which ls

 

文件搜索命令:whereis

命令名称:whereis

功能描述:搜索命令所在目录及帮助文档路径

命令路径:/usr/bin/whereis

执行权限:所有用户

语法:whereis [命令名称]

whereis ls

 

文件搜索命令:grep

命令名称:grep

功能描述:在文件中搜索字串匹配的并输出

命令路径:/bin/grep

执行权限:所有用户

语法:grep -iv [指定字串] [文件]

-i :不区分大小写

-v :排除指定字串

grep xdmcp /etc/services

 

4.4 帮助命令:man1:命令的帮助;man5:配置文件的帮助

帮助命令:man

命令名称:man,manual

功能描述:获得帮助信息

命令路径:/usr/bin/man

执行权限:所有用户

语法:man [命令或配置文件]

命令:这个命令是干什么用的、选项是干什么用的

配置文件:这个配置文件是干什么用的、配置文件的格式

man ls

查看ls命令的帮助信息

man services(不用写绝对路径,只需要配置文件名称即可)

查看配置文件services的帮助信息

 

帮助命令:whatis 命令(查看命令的简短信息),apropos 配置文件(查看配置文件的简短信息)

 

帮助命令:help

命令名称:help

功能描述:获得Shell内置命令的帮助信息

命令路径:Shell内置命令

执行权限:所有用户

语法:help 命令

help umask

查看umask命令的帮助信息

 

4.5 用户管理命令

用户管理命令:useradd

命令名称:useradd

功能描述:添加新用户

命令路径:/usr/sbin/useradd

执行权限:root

语法:useradd 用户名

useradd zza

 

用户管理命令:passwd

命令名称:passwd

功能描述:设置用户密码

命令路径:/usr/bin/passwd

执行权限:所有用户

语法:passwd 用户名

passwd zza

 

用户管理命令:who,tty:本地终端;pts:远程终端

命令名称:who

功能描述:查看登录用户信息

命令路径:/usr/bin/who

执行权限:所有用户

语法:who

 

4.6 压缩解压命令

压缩解压命令:gzip

命令名称:gzip,GNU zip

功能描述:压缩文件只能压缩文件,不能压缩目录,且不保存源文件(即压缩后没有源文件)

命令路径:/bin/gzip

执行权限:所有用户

语法:gzip [文件]

压缩后文件格式:.gz

 

压缩解压命令:gunzip

命令名称:gzip,GNU unzip

功能描述:解压缩.gz的压缩文件

命令路径:/bin/gunzip

执行权限:所有用户

语法:gunzip [压缩文件] 或者 gzip -d [压缩文件]

gunzip test.gz

gzip -d test.gz

 

压缩解压命令:tar

命令名称:tar

功能描述:打包目录

命令路径:/bin/tar

执行权限:所有用户

语法:tar 选项[-zcf] [压缩后文件名] [目录]

-c :打包

-v :显示详细信息

-f :指定文件名

-z :打包同时压缩

压缩后文件格式:.tar.gz

 

tar命令解压缩语法:tar 选项[-zxvf] 压缩文件名

-x :解包

-v :显示详细信息

-f :指定解压文件

-z :解压缩

tar -zxvf test.tar.gz

 

压缩解压命令:zip,Windows和Linux都支持

命令名称:zip

功能描述:压缩文件目录可以保留源文件

命令路径:/usr/bin/zip

执行权限:所有用户

语法:zip 选项[-r] [压缩后文件名] [文件或目录]

-r :压缩目录

压缩后文件格式:.zip

test是文件:

zip test.zip test

abc是目录:

zip abc.zip abc

 

压缩解压命令:unzip,Windows和Linux都支持

命令名称:unzip

功能描述:解压.zip的压缩文件

命令路径:/usr/bin/unzip

执行权限:所有用户

语法:unzip [压缩文件]

unzip test.zip

 

压缩解压命令:bzip2

命令名称:bzip2

功能描述:压缩文件

命令路径:/usr/bin/bzip2

执行权限:所有用户

语法:bzip2 选项[-k] [文件]

-k :产生压缩文件后保留源文件

压缩后文件格式:.bz2

bzip2 -k test

tar -cjf abc.tar.bz2 abc(把gzip的z换成了j)

 

压缩解压命令:bunzip2

命令名称:bunzip2

功能描述:解压缩

命令路径:/usr/bin/bunzip2

执行权限:所有用户

语法:bunzip2 选项[-k] [压缩文件]

-k :解压缩后保留源文件

bunzip2 -k test.bz2

tar -xjf abc.tar.bz2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.7网络命令

网络命令:write

命令名称:write

功能描述:给在线用户发信息,回车,然后以Ctrl+D保存结束

命令路径:/usr/bin/write

执行权限:所有用户

语法:write <用户名>

write zza

 

网络命令:wall

命令名称:wall,write all

功能描述:发广播信息

命令路径:/usr/bin/wall

执行权限:所有用户

语法:wall [message]

wall you are my friend!

 

网络命令:ping

命令名称:ping

功能描述:测试网络连通性

命令路径:/bin/ping

执行权限:所有用户

语法:ping 选项 IP地址

-c 指定发送次数

ping 192.168.42.2

 

网络命令:ifconfig

命令名称:ifconfig,interface configure

功能描述:查看和设置网卡信息

命令路径:/sbin/ifconfig

执行权限:root

语法:ifconfig 网卡名称 IP地址

ifconfig ens33 192.168.42.2

 

网络命令:mail

命令名称:mail

功能描述:查看发送电子邮件

命令路径:/bin/mail

执行权限:所有用户

语法:mail [用户名]

mail root

直接输入mail查看邮件

h :回看邮件

d 序号 :删除邮件

q :退出

 

网络命令:last

命令名称:last

功能描述:列出目前与过去登入系统的用户信息

命令路径:/usr/bin/last

执行权限:所有用户

语法:last

 

网络命令:lastlog

命令名称:lastlog

功能描述:检查某特定用户上次登录的时间

命令路径:/usr/bin/lastlog

执行权限:所有用户

语法:lastlog

lastlog -u zza表示只查看这个用户的信息

 

网络命令:traceroute

命令名称:traceroute

功能描述:显示数据包到主机间的路径

命令路径:/bin/traceroute

执行权限:所有用户

语法:traceroute

traceroute www.baidu.com

 

网络命令:netstat

命令名称:netstat

功能描述:显示网络相关信息

命令路径:/bin/netstat

执行权限:所有用户

语法:netstat [选项]

选项:

-t :TCP协议

-u :UDP协议

-l :监听

-r :路由

-n :显示IP地址和端口号

netstat -tlun 查看本机监听的端口

netstat -an 查看本机所有的网络连接

netstat -rn 查看本机路由表

 

网络命令:setup

命令名称:setup

功能描述:配置网络

命令路径:/usr/bin/setup

执行权限:root

语法:setup

 

挂载命令:mount

命令名称:mount

功能描述:

命令路径:/bin/mount

执行权限:root

语法:mount [-t 文件系统] 设备文件名 挂载点

mount -t iso9660 /dev/sr0 /mnt/cdrom

卸载语法:

umount 设备文件名或者挂载点

umount /dev/sr0

umount /mnt/cdrom

 

4.8关机重启命令

关机重启命令:shutdown

shutdown [选项] 时间

选项:

-c :取消前一个关机命令

-h :关机

-r :重启

runlevel:查询系统运行级别

logout:退出登录命令

 

5 文本编辑器Vim

5.1 Vim的常用操作

Vim工作模式

在命令模式下输入:set number(或者set nu)就可以显示行号!

插入命令

命令作用
a 在光标所在字符后插入
A 在光标所在行行尾插入
i 在光标所在字符前插入
I 在光标所在行行首插入
o 在光标下插入新行
O 在光标上插入新行

定位命令

命令作用
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
:n 到第n行
$ 移至行尾
0 移至行首

删除命令

命令作用
x 删除光标所在处字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾内容
D 删除光标所在处到行尾内容
:n1,n2d 删除指定范围的行

复制和剪切命令

命令作用
yy 复制当前行
nyy 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p、P 粘贴在当前光标所在行下或行上

替换和取消命令

命令作用
r 取代光标所在处字符
R 从光标所在处开始替换字符,按Esc键结束
u 取消上一步操作

搜索和搜索替换

命令作用
/string 搜索指定字符串,搜索时忽略大小写:set ic
n 搜索指定字符串的下一个出现位置(next)
:%s/old/new/g :替换范围;%s全文替换指定字符串,g不询问,c询问
:n1,n2s/old/new/g 在一定范围内替换指定字符串,g不询问,c询问

保存和退出命令

命令作用
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root可使用)

 

5.2 Vim使用技巧

导入文件内容 :r 文件名

不退出Vim查询一个命令的路径 :!which 命令

导入命令执行结果 :r !命令

范例:导入脚本完成时间 :r !date 这个命令会将当前时间导入

 

定义快捷键 :map 快捷键 触发命令

范例:

插入注释符号#的快捷键:

:map ^P I#<ESC>

解释:按Ctrl+v+p会显示有颜色的^P;I:跳到行首并插入;#:要插入的是#;按<ESC>键退出编辑模式,进入命令模式。

删除注释符号#的快捷键:

:map ^B 0x

解释:按Ctrl+v+b会显示有颜色的^B;0:跳到行首;x:把行首光标所在处的第一个字符删掉。

插入邮箱:

:map ^H I1012@qq.com<ESC>

 

连续行注释 :n1,n2s/^/#/g

表示一定范围的行加上注释符号#,^表示行首

:n1,n2s/^#//g

表示删除行首的注释符号#,替换为空

:n1,n2s/^/\/\//g

表示行首插入//

替换 :ab mymail samlee@lampbrother.net

表示在插入模式下将输入的mymail字符替换成邮箱

如果想要永久生效就需要把命令写到每个用户的家目录下的配置文件.vimrc里面

 

6 软件包管理

6.1 软件包管理简介

  1. 软件包分类

    1、源码包

    2、二进制包(centOS:RPM包,Ubuntu:deb包、系统默认包):源代码经过编译后的包

 

7 用户和用户组管理

7.1.1 用户配置文件-用户信息文件-/etc/passwd

1、/etc/passwd

第1字段:用户名称

第2字段:密码标志,表示这个用户是有密码的,但是需要去shadow文件里面去查找。

第3字段:UID(用户ID)

0: 超级用户

1-499: 系统用户(伪用户)

500-65535: 普通用户

第4字段:GID(用户初始组ID)

第5字段:用户说明

第6字段:家目录

普通用户:/home/用户名/

超级用户:/root/

第7字段:登录之后的Shell

2、初始组和附加组

初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

3、Shell是什么

Shell就是Linux的命令解释器

在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin

 

7.1.1 用户配置文件-影子文件-/etc/shadow

1、/etc/shadow

第1字段:用户名

第2字段:加密密码

加密算法升级为SHA512散列加密算法

如果密码位是“!!”或“*”代表没有密码,不能登录

第3字段:密码最后一次修改日期

使用1970年1月1日作为标准时间,每过一天时间戳加1

第4字段:两次密码的修改间隔时间(和第3字段相比)

第5字段:密码有效期(和第3字段相比)

第6字段:密码修改到期前的警告天数(和第5字段相比)

第7字段:密码到期后的宽限天数(和第5字段相比)

0:代表密码过期后立即生效

-1:代表密码永远不会失效

第8字段:账号失效时间

要用时间戳表示

第9字段:保留

2、时间戳换算

把时间戳换算为日期

date -d "1970-01-01 16066 days"

把日期换算为时间戳

echo $(($(date --date="2014/01/06" +%s)/86400+1))

7.1.1 用户配置文件-组信息文件-/etc/group和组密码文件-/etc/gshadow

1、/etc/group

第1字段:组名

第2字段:组密码标志

第3字段:GID

第4字段:组中附加用户

第5字段:

第6字段:

1、/etc/gshadow

第1字段:组名

第2字段:组密码

第3字段:组管理员用户名

第4字段:组中附加用户

 

7.2 用户管理相关文件

1、用户的家目录

普通用户:/home/用户名/,所有者和所属组都是此用户;

超级用户:/root/,所有者和所属组都是root用户。

2、用户的邮箱

/var/spool/mail/用户名

3、用户模板目录

/etc/skel/

 

7.3.1 用户管理命令-用户添加命令useradd

1、useradd命令格式

useradd [选项] 用户名

选项:

-u UID: 手工指定用户的UID号

-d 家目录: 手工指定用户的家目录

-c 用户说明:手工指定用户的说明

-g 组名: 手工指定用户的初始组

-G 组名: 指定用户的附加组

-s shell: 手工指定用户的登录shell。默认是/bin/bash

2、添加默认用户

useradd wood

grep wood /etc/passwd

grep wood /etc/shadow

grep wood /etc/group

grep wood /etc/gshadow

ll -d /home/zza/

ll /var/spool/mail/zza

3、指定选项添加用户

useradd -u 666 -G root,bin -d /home/wood -c "test user" -s /bin/bash wood

4、用户默认值文件

/etc/default/useradd

GROUP=100 #默认用户组

HOME=/home #用户家目录

INACTIVE=-1 #密码过期宽限天数(shadow文件7字段)

EXPIRE= #密码失效时间(8)

SHELL=/bin/bash #默认shell

SKEL=/etc/skel #默认目录

CREATE_MAIL_SPOOL=yes #是否建立邮箱

 

/etc/login.defs

PASS_MAX_DAYS 99999 #密码有限期(5)

PASS_MIN_DAYS 0 #密码修改间隔(4)

PASS_MIN_LEN 5 #密码最小5位(PAM)

PASS_WARN_AGE 7 #密码到期警告(6)

UID_MIN 500 #最小和最大UID范围

GID_MAX 60000

ENCRYPT_METHOD SHA512 #加密模式

 

7.3.2 用户管理命令-修改用户密码passwd

1、passwd命令格式

passwd [选项] 用户名

选项:

-S:查询用户密码的密码状态。仅root用户可用

-l:暂时锁定用户。仅root用户可用

-u:解锁用户。仅root用户可用

--stdin:可以通过管道符输出的数据作为用户的密码

2、查看密码状态-只能超级用户来查询,查询wood用户

passwd -S wood

wood PS 2021-04-12 0 99999 7 -1

用户名 密码 设定时间(2021-04-12) 密码修改间隔时间(0)密码有效期(99999) 警告时间(7) 密码不失效(-1)

3、锁定用户和解锁用户

passwd -l wood

passwd -u wood

4、使用字符串作为用户的密码

echo "123" | passwd --stdin wood

 

7.3.3 用户管理命令-修改用户信息usermod和修改用户密码状态chage

1、修改用户信息usermod

usermod [选项] 用户名

选项:

-u UID: 修改用户的UID号

-c 用户说明: 修改用户的说明信息

-G 组名: 修改用户的附加组

-L: 临时锁定用户(Lock)

-U: 解锁用户锁定(Unlock)

#修改用户的说明

usermod -c "test user" wood

#把wood用户加入root组

usermod -G root wood

#锁定用户

usermod -L wood

#解锁用户

usermod -U wood

2、修改用户密码状态chage

chage [选项] 用户名

选项:

-l: 列出用户的详细密码状态

-d 日期: 修改密码最后一次更改日期(shadow3字段)

-m 天数:两次密码修改间隔(4字段)

-M 天数:密码有效期(5字段)

-W 天数:密码过期前警告天数(6字段)

-I 天速:密码过期后宽限天数(7字段)

-E 日期:账号失效时间(8字段)

 

#这个命令其实是把密码修改日期归0了(shadow第3字段),这样用户一登录就要修改密码:主要用于创建大量普通用户的时候,会给一个初始密码,当用户第一次登录就必须重新设置密码,这样就保证了系统安全性。

chage -d 0 wood

 

7.3.4 用户管理命令-删除用户userdel和用户切换命令su

1、删除用户userdel

userdel [-r] 用户名

选项:

-r:删除用户的同时删除用户家目录

 

2、查看用户ID

id 用户名

 

3、用户切换命令su

su [选项] 用户名

选项:

-:选项只使用“-”代表连带用户的环境变量一起切换

-c:仅执行一次命令,而不切换用户身份

#切换成root

su - root

#不切换成root,但是执行useradd命令添加user1用户

su - root -c "useradd user1"

 

7.4用户组管理命令

1、添加用户组

groupadd [选项] 组名

选项:

-g GID:指定组ID

groupadd tg

 

2、修改用户组

groupmod [选项] 组名

选项:

-g GID:修改组ID

-n 新组名:修改组名

#把组名tg修改为testgroup

groupmod -n testgroup tg

 

3、删除用户组

groupdel 组名

groupdel testgroup

 

4、把用户添加入组或从组中删除

gpasswd 选项 组名

选项:

-a 用户名:把用户加入组

-d 用户名:把用户从组中删除

 

 

 

 

 

 

 

 

 

8 权限管理

8.4 权限管理-sudo权限

1、sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行

sudo的操作对象是系统命令

2、sudo使用

visudo

#实际修改的是/etc/sudoers文件

root ALL=(ALL) ALL

#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

#%wheel ALL=(ALL) ALL

#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

3、授权wood用户可以重启服务器

visudo

wood ALL=/sbin/shutdown -r now

4、普通用户执行sudo赋予的命令

#切换成wood用户:

su - wood

#查看可用的sudo命令

sudo -l

#普通用户执行sudo赋予的命令

sudo /sbin/shutdown -r now

9 文件系统管理

9.1 回顾分区与文件系统

分区:

sd:代表SATA硬盘接口

hd:代表IDE硬盘接口

abcd:代表第几块硬盘

1234:代表主分区

5678:代表逻辑分区

 

Linux的文件系统:

ext2、ext3、ext4三种

 

9.2.1 文件系统常用命令-df、du、fsck、dumpe2fs

9.2.1.1 文件系统常用命令-df-文件系统查看命令

df [选项] [挂载点]

选项:

-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs

-h 使用习惯单位显示容量,如KB,MB和GB等

-T 显示文件系统类型

-m 以MB为单位显示容量

-k 以KB为单位显示容量。默认就是以KB为单位

 

9.2.1.2 文件系统常用命令-du-统计目录或文件大小

du [选项] [目录或文件名]

但是一般不用来看文件大小,因为ls -lh可以很清楚看出文件大小

选项:

-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量

-h 使用习惯单位显示磁盘占用量,如KB,MB和GB等

-s 统计占用总量,而不列出子目录和子文件的占用量

 

du命令和df命令的区别

df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)

du命令是面向文件的,只会计算文件或目录占用的空间

 

9.2.1.3 文件系统常用命令-fsck-文件系统修复命令-开机后会自动进行检测,一般不需要用到

fsck [选项] 分区设备文件名

选项:

-a 不用显示用户提示,自动修复文件系统

-y 自动修复。和-a作用一致,不过有些文件系统只支持-y

 

9.2.1.4 文件系统常用命令-dumpe2fs-显示磁盘状态命令

dumpe2fs 分区设备文件名

 

9.2.2 文件系统常用命令-挂载命令

1、查询与自动挂载

查询系统中已经挂载的设备,-l会显示卷标名称

mount [-l]

依据配置文件/etc/fstab的内容,自动挂载

mount -a

2、挂载命令格式

mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点

选项:

-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统

-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载

-o 特殊选项:可以指定挂载的额外选项

 

9.2.3 文件系统常用命令-挂载光盘与U盘

1、挂载光盘

建立挂载点

mkdir /mnt/cdrom

挂载光盘

mount -t iso9660 /dev/cdrom /mnt/cdrom/

或者:cdrom和sr0是一样的,软链接而已。

mount /dev/sr0 /mnt/cdrom/

2、光盘卸载命令

umount 设备文件名或挂载点

umount /mnt/cdrom

3、挂载U盘

查看U盘设备文件名

fdisk -l

mount -t vfat /dev/sdb1 /mnt/usb/

 

注意:Linux默认是不支持NTFS文件系统的

4、U盘卸载命令

umount 设备文件名或挂载点

umount /dev/sdb1

 

9.3.1 fdisk分区-分区过程

这个分区每次重启都需要执行挂载命令才可以挂载,也就是说一重启分区就会丢,必须重新挂一遍,才能使用。

1、添加新硬盘

2、查看新硬盘

fdisk -l

 

3、使用fdisk命令分区

fdisk /dev/sdb

按n新建分区,创建一个主分区(按p),一个扩展分区(按e),再在扩展分区中创建一个逻辑分区(按l)。

fdisk交互指令说明 
命令 说明
a 设置可引导标记
b 编辑bsd磁盘标签
c 设置DOS操作系统兼容标记
d 删除一个分区
l 显示已知的文件系统类型。82为Linux swap分区,83为Linux分区
m 显示帮助菜单
n 新建分区
o 建立空白DOS分区表
p 显示分区列表
q 不保存退出
s 新建空白SUN磁盘标签
t 改变一个分区的系统ID
u 记录显示记录单位
v 验证区分表
w 保存退出
x 附加功能(仅专家)

4、重新读取分区表信息

partprobe

5、格式化分区

在这里sdb2是扩展分区,唯一的作用就是在里面包含逻辑分区,它既不能格式化,也不能写入数据。

mkfs -t ext4 /dev/sdb1

mkfs -t ext4 /dev/sdb5

6、建立挂载点并挂载

mkdir /disk1

mount /dev/sdb1 /disk1/

mkdir /disk5

mount /dev/sdb5 /disk5/

 

使用mount命令或者df命令都可以看到挂载成功

 

9.3.2 fdisk分区-自动挂载与fstab文件修复

1、/etc/fstab文件

第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)

第二字段:挂载点

第三字段:文件系统名称

第四字段:挂载参数

第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份

第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高

 

2、分区自动挂载

vi /etc/fstab

输入:

/dev/sdb1 /disk1 ext4 defaults 1 2

 

依据配置文件/etc/fstab的内容,自动挂载

mount -a

 

3、/etc/fstab文件修复

mount -o remount,rw /

 

 

 

 

 

 

 

 

 

10 Shell基础-Shell是Linux的命令解释器

10.2 脚本执行方式

echo输出命令

echo [选项] [输出内容]

选项:

-e:支持反斜线控制的字符转换

删除左侧字符:输出ac

echo -e "ab\bc"

制表符与换行符

echo -e "a\tb\tc\nd\te\tf"

输出颜色

echo -e "\e[1;31m abcd \e[0m"

30m=黑色,31m=红色,32m=绿色,33m=黄色

34m=蓝色,35m=洋红,36m=青色,37m=白色

第一个脚本

vi hello.sh

 #!/bin/bash
 #Author:zza
 
 echo "zza is the most honest man"

脚本执行

  1. 赋予执行权限,直接运行

chmod 755 hello.sh

./hello.sh

  1. 通过bash调用执行脚本

bash hello.sh

 

10.3 Bash基本功能

历史命令与补全

history [选项] [历史命令保存文件]

选项:

-c:清空历史命令

-w:把缓存中的历史命令写入历史命令保存文件

~./bash_history

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改。

 

历史命令的调用:

使用上、下箭头调用以前的历史命令

使用“!n”重复执行第n条历史命令

使用"!!"重复执行上一条命令

使用“!字串”重复执行最后一条以该字串开头的命令

 

 

命令与文件补全

按“Tab”键就会自动进行补全。

 

别名与快捷键

命令别名

设定命令别名:临时生效

alias 别名=‘原命令’

查询命令别名:

alias

让别名永久生效:

vi /home/zza/.bashrc

删除别名:

unalias 别名

 

Bash常用快捷键

快捷键作用
ctrl+c 强制终止当前的命令
ctrl+l 清屏,相当于clear命令
ctrl+u 删除或剪切光标之前的命令。
ctrl+y 粘贴ctrl+u或ctrl+k剪切的内容
ctrl+r 在历史命令中搜索,按下ctrl+r之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索
ctrl+d 退出当前终端

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13 Linux系统管理

13.1 进程管理

进程管理:进程查看

查看系统中所有进程,使用BSD操作系统格式(Unix)

ps aux

a - 查看所有前台进程

x - 查看所有后台进程

u - 显示这个进程是由哪个用户产生的

 

查看系统中所有进程,使用Linux操作系统格式

ps -le

e - 显示所有进程

 

USER:该进程是由哪个用户产生的;

PID:进程的ID号;

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;

RSS:该进程占用实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端;

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台;

START:该进程的启动时间;

TIME:该进程占用CPU的运算时间,注意不是系统时间;

COMMAND:产生此进程的命令名。

 

进程管理:查看系统健康状态

top [选项]

选项:

-d 秒数:指定top命令每隔几秒更新。默认是3秒

在top命令的交互模式当中可以执行的命令:

?或h:显示交互模式的帮助

P:以CPU使用率排序,默认就是此项

M:以内存的使用率排序

N:以PID排序

q:退出top

 

第一行信息为任务队列信息

内容说明
12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间
2 users 当前登录了两个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负载。

第二行为进程信息

内容说明
Task: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程

第三行为CPU信息

内容说明
Cpu(s): 0.1%us 用户模式占用的CPU百分比
0.1%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程占用的CPU百分比
99.7%id 空闲CPU的CPU百分比
0.1%wa 等待输入/输出的进程的占用的CPU百分比
0.0%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比

第四行为物理内存信息

内容说明
Mem: 625344k total 物理内存的总量,单位为KB
571504 used 已经使用的物理内存数量
53840k free 空闲的物理内存数量,
65800k buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息

内容说明
Swap: 524280k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交换分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交换分区的大小

 

进程管理:查看进程树

pstree [选项]

选项:

-p:显示进程的PID

-u:显示进程的所属用户

 

13.2 终止进程

终止进程:kill命令

kill -l

查看可用的进程信号

 

信号代号信号名称说明
1 SIGHUP 该信号让进程立即关闭,然后重新读取配置文件之后重启
9 SIGKILL 用来立即结束程序的运行,本信号不能被阻塞、处理和忽略。一般用于强制终止进程
15 SIGTERM 正常结束进程的信号kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是信号9。

 

kill -1 进程ID号

重启进程

 

kill -9 进程ID号

强制杀死进程

 

终止进程:killall命令

killall [选项] [信号] 进程名

按照进程名杀死进程

选项:

-i:交互式,询问是否要杀死某个进程

-I:忽略进程名的大小写。

killall -9 httpd

 

终止进程:pkill命令

pkill [选项] [信号] 进程名

按照进程名终止进程

选项:

-t 终端号:按照终端号踢出用户

w

使用w命令查询本机已经登录的用户

pkill -t -9 pts/1

强制杀死从pts/1虚拟终端登录的进程

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-04-05 14:49  木芯子  阅读(80)  评论(0编辑  收藏  举报