一.时间管理:
Linux: 系统时间,硬件时间
使用命令date
clock
系统时间:hwclock
-w 系统时间是准确的,把硬件时间设定为系统时尖一致
-s
date 1212121212.12(年月日时分秒)
date “+%H”显示小时
date S 秒
date M 分
date y 年 简略
date Y 年 完整
date m 月
date D 天
cal 显示本月日历
cal 2011 显示2011年的全部日历
完整命令为(显示系统时间):date mmddHHMMyy.SS
二.命令类型:
内部:CD 你所对应的shell,自身所附带的,没有对应的可执行程序
外部:IS 有对应的可执行程序(2进制文件)
WHICH
type command 查看命令的类型
command --help(外部命令获得帮助信息的方式), help command(内部命令获得帮助信息的方式)
三.man 命令
1.
man command显示命令的使用手册
info command 更多的讲述命令背后的故事
man n command 显示第n个章节的内容
what is command 查看命令在man第几章节出现
2.man 为命令提供的使用手册是分章节的
1,普通的用户命令
2,系统调用
3,库调用
4,特殊文件
5,配置文件的语法文件格式
6,游戏说明
7,杂项
8,管理类应用
man的章节在/usr/share/man下存放,并且是压缩文件
man可查看的内容:
name:命令的名字
SYSNOPSIS:命令的格式
EXAMPLES:给出的使用样例
FILES:命令所关联到的配置文件
OPTIONS:选项介绍
操作:
空格:向下翻页
b:向上
回车:向下翻行
k:向上
4.操作技巧
man -f = -ls
what is 针对数据库实现,需要makewhatis生成所需数据库
man -k 搜索关键词在所处的简要说明信息(数据库)里的位置
-K 搜索man手册页中所有的关键字
/keyword从文件首部向文件尾部搜索
? 从文件尾部向文件首部
n下一个
N前一个
mingetty 生成TTY
login
finger
cat 加上行号
四,查看文本文件的命令:
1,cat:concatenate(可用于连接多个文件)
dump(把文件内容倾倒在屏幕上)
-n 显示文件内容时加上行号
-e 显示隐藏的控制字符
$结束字符
2,more 翻屏查看文件(主要向后翻页)
3,less 翻屏查看文件(支持向前向后)
4,tail -n 20 filename (显示后20行,默认十行)
-f 动态查看
5,head -n 20 filename (显示前20行,默认十行)
6,wc(wordcounter)filename 统计文件的行数,字节数(包含空白),单词数
-l 行
-w 字符
五,如何实现用户管理
1.User,Group,Permission
用户:一个使用者获取系统资源的凭证,一组权限的集合
2.User Name:UID(用户标识)
验证用户
3.Group
Group:一种可存放用户的容器,权限的集合
UID
4.GID
范围:0-65535
管理员的ID号永远为0
系统用户:1-499
普通用户:500-65534
nobody:65535(来宾)
溢出:-1
5.私有组,公共组
任何一个用户必然会属于某一个组,私有组,基本组
建立以后加入了多个用户,公共组,附加组
6.安全上下文:Secure Context
进程:资源分派的单位,是一个程序的正在执行的副本
安全上下文:当一个进程发起的时候,进程访问的权限取决于发起该进程用的户所具有的权限。
权限分组:
属主
属组
其他用户
权限类型:
R
W
X
文件:不同权限涉及的操作
r:cat,more
w:
x:
目录:不同权限涉及的操作
r:ls
w:能够到目录中新建或删除文件
x:cd,ls -l
7.添加用户与组的命令
手动添加组:groupadd
useradd
-u UID
-g GID
-G GROUP1,GROUP2指定额外组
-c “comment”
-d /path/to/home
-s SHELL
groupadd
-g GID
-r 把用户添加到系统用户
userdel
-r 连带家目录一同删除
groupdel
usermod
用于修改用户的信息
-u 修改账号
-g 修改基本组
-a -G 修改附加组(删除原附加组)
-s 修改shell
-c 修改注释信息
-d -M 修改家目录
-l 改变登录名称
-e 指定过期时间
-L 锁定用户账号
-U 解锁
groupmod
-g 改变组ID号
-n 改变组名
passwd
-l 锁定用户账号
-u 解锁
--stdin 把标准输入改为别的输入
finger 查看用户的详细信息
id 查看用户的ID信息
who 查看当前登录的所有用户
六.用户与密码
1.用户与密码保存的路径:
用户:/etc/passwd
组:/etc/group
密码:/etc/shadow
组密码:/etc/gshadow
建立用户:useradd username
给用户设置密码:passwd
2.用户及密码信息公分7段:
7段:
用户名:X(密码):UID:基本组的GID:用户的注释(COMMENT):用户的家目录:默认使用的shell
cat /etc/shells
可以允许用户使用的shell
/etc/shadow
用户名:加密的密码:上一次密码的修改时间:密码的最短使用期限:密码的最长使用期限:密码过期通知的提前时间:密码过期多久后帐号会被禁用:帐号的使用期限
3.加密方法:
md5散列加密
加密方法:
对称加密
公钥加密
单向加密:提取数据的特征值
(雪崩效应:初始条件的改变会导致结果的巨大改变
定长输出:加密后位数一样
)
md5(128bit定长)
sha1(160bit定长)
date "+%s"
七,文件的权限:
1.数字与字符两种表示方法及转换
rwx:
---:000 0
--x:001 1
-w-:010 2
-wx:011 3
r--:100 4
r-x:101 5
rw-:110 6
rwx:111 7
644 rw-r--r--
755 rwxr-xr-x
000 ---------
711 rwx--x--x
700 rwx------
777 rwxrwxrwx
555 r-xr-xr-x
111 --x--x--x
600 rw-------
731 rw--wx--x
2.改变文件权限的命令
·改变属主:chomn
chown [option] USENAME file
chown gentoo a.txt
-R 递归修改,目录和目录下所有文件
--reference=file 将权限设置为与某文件一样
·改变属组:chgrp
chgrp mygrp a.txt
chown同时修改属主属组
chown USENAME:GRPNAME file
chown root:root a.txt
chown :mygrp a.txt
·改变文件权限:chmod
三种方式:
1,chomd [option] mode files...
chmod 777 a.txt
2,属主:u
数组:g
其他:o
全部:a
chmod u=rw- a.txt
3,+/-
chmod g-w a.txt
备注:目录只改变目录本身的权限,内容权限不会变;只有管理员可以改变chown和chgrp。
八.shell
BASH:csh,ksh
history:
!$, Alt+. Esc+.
1.命令行编辑:
ctrl+a:跳跃到行首
ctrl+e:跳跃到行尾
ctrl+u:删除光标开始处到行首
ctrl+q:删除光标开始处到行尾
Arrow:左右一次跳一个单词
2,文件名通配
*:任意长度任意字符
e.g:#ls *.log
?:任意单个字符
[]:匹配指定范围内的任意单个字符,[a-z]
[^]:取反
备注:指定字符范围[a-zA-Z0-9]。
[:keyword:]
[:lower:]
[:upper:]
[:punct:]
[:space:]
[:alpha:]
[:alnum:]
[:digit:]
/etc/目录下,所有以不区分大小写p字母开头,后面跟了任意字符的文件
ls [pP]*
/etc,以任意小写字母开头,后面紧跟一个数字,而后又有任意字符的文件
ls /etc/[[:lower:]][[:digit:]]*
3.命令行补全和路径补全
tab
命令补全:
usera
路径补全
4.命令行展开:
~:展开为对应用户的家目录
{}:x/y,x/z,x/z/1,x/z/2
mkdir -pv x/{y,z/{1,2}}
x_1, x_2, y_1, y_2
mkdir -pv {x,y}_{1,2}
5.命令扩展
$() 把执行结果当做参数传递给命令
'' 引用命令执行的结果作为另一命令的对象
mkdir $(date " ")
ls -l 'which passwd'
九,变量
1.变量:命名的内存空间
NAME=Jerry
2.echo命令
echo 显示一行文本
-n 不显示换行符
-e 解释转义字符
echo ${NAME}
命令引用``
变量引用
‘’(强引用,不会进行变量替换)
“”(弱引用,可以进行变量替换)
3.bash,变量不需要声明
$引用变量
4.变量类型
变量名=“strings”
set 变量名。。。
unset 变量名。。。
十,脚本
1.编程语言:
脚本语言:
以一个源程序的方式存在,执行前不需要编译,而是靠一个解释器解释执行;
维护简便
执行效率差
bash,perl,python,ruby,php
编译型语言:
编辑—编译—连接—运行
c,c++,
2.脚本里就是命令的堆砌:
#!/bin/bash,shebang
3编写脚本
1)编写一个简单的脚本显示Hello World!
在当前目录下用nano编辑一个文件叫 hello.sh
#!/bin/bash
echo -e "Hello World!"
编写完成后,修改这个文件的权限chmod a+x hello.sh,然后执行./hello.sh
2)写一个脚本
复制/etc/skel目录至/home,并且重命名为centos
设定此目录及其内部文件或子目录的属主属组为redhat用户,redhat组
设定此目录及其内部文件或子目录的权限为属组和其他用户没有任何权限
修改redhat用户的家目录为/home/centos
nano script.sh
#!/bin/bash
cp -Pv /etc/skel /home/centos
ls -lhd /home/centos
chmod -R redhat:redhat /home/centos
ls -lhd /home/centos
chmod -R go=--- /home/centos
ls -lhd /home/centos
usermod -d /home/centos redhat
cat /etc/passwd
编写完成后,修改这个文件的权限chmod a+x script.sh,然后执行./script.sh