linux的时间管理
关于时间的命令:date,clock ,hwclock ,cal
date //查看系统时间
clock //查看硬件时间
hwclock
-w //将硬件时间设为系统时间
-s //将系统时间设为硬件时间
cal //显示日历
cal 2011 //显示2011年的日历
cal 1 2011 //显示2011年1月的日历
若要修改时间,注意格式
date mmddHHMMyy.ss //月月日日时时分分年年秒秒
date +FORMAT
date "+%H" //显示小时
+%F //日期 2011-11-11
+%T //时间 11:11:11
date "+%H:%M:%S" //显示小时:分钟:秒
y Y d D //d 天 D 日期
y 年 Y 完整年份
date "+%s" //从1970年到现在的秒数
比如修改系统时间为2000-10-10 20:20:10
[root@server45 ~]# date "101020202000.10"
2000年 10月 10日 星期二 20:20:10 CST
———————————————————————————————————————————
命令帮助信息
命令:
内部命令: shell本身自带的命令,没有对应的可执行文件
外部命令: 有对应的可执行文件
which cd //查看长cd 命令所在目录(cd没有对应文件)
type cd //查看命令类型
type ls
command --help //外部命令帮住信息 摘要信息
help command //内部命令帮助信息 摘要信息
使用--help查看ls的帮助信息
[root@server45 ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.
man command //显示命令的使用手册 mainpage
man为命令提供的使用手册是分章节的
1:普通的用户命令
2:系统调用
3:库调用
4:特殊文件
5:文件格式
6:游戏
7:杂项
8:管理类命令 //重要
#man里需要关注的项
NAME
DESCRIPTION
EXAMPLES
FIFES
OPTIONS
info command //讲述命令背后的故事
————————————————————————————————————————————————————
文本察看类命令:
cat,more,less,tail,head,tac
cat: concatinate , dump //连接,倾倒式显示
cat -n //显示行号
-e //显示特殊隐藏字符 $在linux里是换行符
tail -n 后n行 默认10行
head -n 前n行 默认10行
wc : word count
wc /etc/rc.d/rc.sysinit //统计文件的字数行数等
-l //只显示有多少行
-w -m -L //单词,字符大小,最长的行多长
例如:查看/etc/shadow,要求显示行号
[root@server45 ~]# cat -n /etc/shadow
1 root:$1$3V8BcCva$MkHdNIWmVtTD10JU95Uxf/:15173:0:99999:7:::
2 bin:*:15173:0:99999:7:::
3 daemon:*:15173:0:99999:7:::
如果要查看的文本过长,可使用more,less分页查看
more 只能向后翻
less 前后都可以翻
##命令格式
more /ect/shadow
————————————————————————————————————————————————
如何实现用户管理
User, Group, Permission
相关概念:
User:用户是使用权限的集合,是一种凭证
User Name:UID //系统通过UID识别用户
验证用户:密码,指纹等。。
Group:权限的集合
Group Name : GID
UID GI0 : 0 - 65535
ROOT : 0
系统用户 : 1-499
普通用户 : 500-65534
nobody : 65535 //相当于windows的guest
私有组 : 组里只有一个用户 用户的基本组
任何一个用户必然属于某个组,私有组
公有组 : 多个用户 用户的额外组
permission 权限
drwx------ 2 root root 4096 Jul 18 20:23 gconfd-root
| | |
属 属 其 用户 属组
主 组 它
r 读 w 写 x 执行 t ?
4 2 1
chown,chgrp,chmod命令使用说明
chown [option] USERNAME file //改属主
-R //递归修改 目录下的文件也改
--reference=a.txt b.txt //把b改成a的标准
chown USERNAME:GRPNAME a.txt
chown USERNAME.GRPNAME a.txt
chown :GRPNAME a.txt
chown dean a.txt
chgrp //改属组
chgrp dean a.txt
chmod [options] mode files...
chmod 777 a.txt
chmod u=rw- a.txt
+/- //+授予-撤销
chmod g-w a.txt
chmod +x a.txt
-R
--reference=
练习:创建一个文件aa,把它的权限改为777,显示结果
[root@server45 ~]# touch aa
[root@server45 ~]# cat aa
[root@server45 ~]# ll aa
-rw-r--r-- 1 root root 0 10-10 20:45 aa //权限为644
[root@server45 ~]# chmod 777 aa //修改aa的权限
[root@server45 ~]# ll aa
-rwxrwxrwx 1 root root 0 10-10 20:45 aa //权限变为777
用户的添加,修改,组的添加和修改
useradd 命令
-u UID
-g GID //用户所属基本组
-G -a GROUP1,GROUP2 //指定附加组
-c “COMMENT”
-d /path/to/home
-s SHELL
-r //添加为系统用户
/home/username //里面存放用户的环境变量
groupadd 命令
-g GID
-r //添加为系统组
userdel
-r //连同家目录一起删除
groupdel
usermod
-u //修改UID
-g
-a -G //修改额外组
-s
-c
-N -d
-l //改变登录名称
-e //过期时间
-L //锁定用户
-U //解锁用户ca
groupmod
-g
-n //改变组名
passwd
-l //锁定用户帐号
-u //解锁用户帐号
--stdin //把标准输入改为别的输入
-x //密码最长使用期限
-n //最短使用期限
练习:创建一个用户xiaohong,家目录为/tmp/xiaohong,创建一个组ren,把xiaohong加入到组ren里
[root@server45 ~]# useradd -d /tmp/xiaohong xiaohong
[root@server45 ~]# tail -1 /etc/passwd
xiaohong:x:515:515::/tmp/xiaohong:/bin/bash //家目录成功修改
[root@server45 ~]# groupadd ren
[root@server45 ~]# usermod -G ren xiaohong
[root@server45 ~]# tail -1 /etc/passwd
xiaohong:x:515:515::/tmp/xiaohong:/bin/bash
[root@server45 ~]# tail -1 /etc/gshadow
ren:!::xiaohong //xiaohong成功加入ren
##其他有用的命令
figer //用户信息
id //用户id相关信息
who //当前系统所登录用户
————————————————————————————————————————————————————
BASH和变量
bash的使用技巧
history //显示执行过的命令,默认1000条
!$, Alt+. Esc+. //输入上一条命令的最后一个参数
1.命令行编辑的快捷键
CTROL+a //行首
CTROL+e //行尾
CTROL+u //光标开始到行首删除
CTROL+k // 行尾
CTROL+Arrow //一次跳单词一个
2.文件名通配符
* //任意长度任意类型
? //任意单个字符
[] //匹配指定范围内的任意单个字符,[a-z]
^ //取反
特殊通配符
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:] //用man 7 glob查看
#例如显示/etc/目录下,所有以不区分大小写p字母开的,后面跟了任意字符的文件
ls /etc/[pP]*
# 显示/etc/目录下,以小写字母开头,第二个字符是数字,后面跟了任意字符的文件
ls /etc/[:lower:][:digit:]*
3.命令行补全和路径补全 //连续敲击Tab键
命令行补全:执行命令是到$PATH变量里的路径下匹配最佳命令
路径不全:在父目录下找最佳匹配
4.{}展开
~ //展开为对应用户的家目录
{} //展开多个目录
mkdir -pv x/y 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 “+%Y-%M”) //以当前日期名作为文件夹名字创建,很实用
`` //表示命令引用和$()类似
ls -l `which passwd` //优先执行which passwd ,这条命令的作用是找到并显示passwd命令所在路径里的内容
—————————————————————————————————————————————————— —— ————
变量:命名的内存空间
变量的定义、取消和显示
变量名=“strings”
set 变量名=“strings”
unset 变量名
NAME=JERRY //定义NAME变量为JERRY
echo $NAME //显示NAME变量的内容
echo ${NAME} // 标准写法
-n //不显示换行符
-e //应用转义字符
变量引用:
“” : 弱引用,可以进行变量替换
‘’ : 强引用,不会进行变量替换
变量不会永久有效,通常只对当前shell有效,退出shell后,定义的临时变量会自动取消,另外
bash里
1.变量不需要声明
2.变量不区分类型,所有变量默认字符串型,不能参加数字运算
————————————————————————————————————————————————————————————————
shell脚本
编程语言的分类
脚本语言:bash,perl(语言学家),python(灵活,简洁),ruby,php
以源程序的方式存在,执行前不需要编译,而是靠一个解释器执行
维护简便
执行效率差
编译型语言:
编辑-->编译-->链接-->运行 ,更接近底层,执行效率很高,如C , C++但是需要编译,话费的时间长,适合开发
SEHLL脚本:可以理解为命令的堆砌
SHELL脚本的格式和使用方法
#!/bin/bash //第一行标准 称为shebang
# //备注符号
nano myscript.sh //先用nano创建一个脚本文件
chmod +x myscript.sh //再编辑脚本后给脚本文件赋值
./myscript.sh //执行脚本
写一个脚本:
1、创建目录/tmp/scripts
2、切换工作目录至此目录中
3、复制/etc/pam.d目录至当前目录,并重命令为test
4、将当前目录中的test及其里面的文件和子目录的属主改为redhat
5、将test及其子目录中的文件的其它用户的权限改为没有任何权限
#!/bin/bash
#
DIR='/tmp/csripts2' //先声明一个变量DIR
mkdir $DIR
cd $DIR
cp -rf /etc/pam.d ./test //使用递归复制
chown -R redhat ./test\ //改属主
chmod -R o=--- ./test //递归修改权限
ls -lR $DIR //显示结果
unset DIR //取消变量,其实脚本执行完毕后会自动释放变量