首页 > 代码库 > linux
linux
Linux基础
一、基础命令
1、ls:列出当前目录下的的文件或目录
2、ls -a :列出当前目录下所有的文件和目录(包括隐藏文件)
3、ls -l :显示文件的详细信息(长格式的信息查看),相当于 ll
ls -hl:显示文件的详细信息和文件的大小
ls -al:列出当前目录下所有的文件和目录的详细信息
ls -dl:显示当前文件本身的详细信息
4、cat 命令:查看文件信息(只能查看文件)
[root@com ~]# cat /etc/passwd :查看所有的用户信息
[root@com ~]# cat /etc/group :查看所有的用户组信息
注明:在Linux系统中每创建一个用户就会自动生成一个对应的用户组。
5、cd命令:切换目录(注意切换的时候路径要写全)
[root@com ~]# cd /etc :切换到根目录下的etc目录
pwd:显示当前文件的目录
whoami:查看当前的用户
[root@com etc]# whoami:查看当前用户是root用户
root
6、/:表示用户的根目录
添加用户adduser
passwd 密码
家目录(宿主目录)
1)管理员用户的家目录:
[root@com ~]# pwd
/root
2)普通用户的家目录:
[java17@com ~]$ pwd
/home/java17
7、切换用户命令:su - 用户名
1)切换到普通用户
[root@com ~]# su - java17
[java17@com ~]$ pwd
/home/java17
2)切换到root管理员用户
[java17@com ~]$ su - 或
[java17@com ~]$ su - root
Password:
8、关机、重启、清屏
关机:halt、init 0、shutdown now
重启:reboot、init6
清屏:clear、Ctrl+l
二、Linux文件和目录的一些常用命令
1、touch命令:创建一个空文件
在root用户的家目录下创建一个java17.txt的空文件
[root@com ~]# touch java17.txt
2)在root用户的家目录下创建一个带空格的文件(对有空格文件加上引号即可)
[root@com ~]# touch "program file"
2、rm命令:删除文件或目录
删除root用户家目录下的program这个空文件
[root@com ~]# rm program
3、mkdir命令:创建一个目录
1)[root@com ~]# mkdir java17:创建一个java17的目录
2)删除java17这个目录:[root@com ~]# rm -rf java17
注意:如果java17这个目录下还有文件,向一次性删除,用到选项-rf。
-f:在使用中很容易将系统中重要的文件删掉,所以在使用中要谨慎。
3)递归创建目录 -p
[root@com ~]# mkdir -p beifeng/laowang
4、cp命令:复制一个文件或目录
拷贝根目录下etc配置目录下的passwd文件到root用户家目录下的beifeng目录中
[root@com ~]# cp /etc/passwd /root/beifeng
查看是否复制成功:[root@com ~]# ls beifeng
file laowang passwd
5、mv命令:剪切和重命名移动
1)如需要将 /tmp 目录下的tomcat.zip文件剪切到 /usr/local 目录下,执行命令即可:
# mv /tmp/tomcat.zip /usr/local
2)重命名的功能
[root@com ~]# mv laowang gebilaowang
6、more命令:分页查看文件的内容
[root@com ~]# more /etc/services
1)按回车键:一行一行的查看文件内容
2)按一下空格键:一页一页的查看文件的内容
3)退出文件查看:q或Ctrl+c
7、head命令
1)查看一个文件的前几行(默认是查看前十行)
[root@com ~]# head /etc/services
2)选项 -n(n代表数字)查看文件的前30行
[root@com ~]# head -30 /etc/services
8、tail命名:查看文件的后几行(默认查看文件的后十行)
1)[root@com ~]# tail /etc/services (默认查看文件的后十行)
2)查看文件的后三十行
[root@com ~]# tail -30 /etc/services
3)动态查看文件的后十行
[root@com ~]# tail -f /etc/services
注意:文件可能优势回进行添加和删除,加上选项-f就能保证我们要查看最后十行文件信息数据
9、find命令:查找文件或目录
查看文件名为java17.txt的文件同时显示目录信息
[root@com ~]# find -name java17.txt
./java17.tx
[root@com ~]# find / -name beifeng01
/beifeng01
三、vi编辑器
1、三种模式:
1)命令行模式:刚进入文件的时候状态
[root@com ~]# vi /etc/passwd
2)编辑模式(插入模式):按i键进入编辑模式
3)最后行模式:保存和退出状态
a.如果我们对文件进行了修改要进行保存的话,先进入命令行模式anEsc进去最后行模式后
按Shift : wq 对文件进行保存并退出。
b.如果指示查看文件信息不进行对其编辑直接进入命令行模式按Esc进入最后行模式进行退出,
按Shift : q!进行强制退出。
注意:w:保存 q:退出 !:强制操作
这三个选项可以联合使用。
2、vi快捷键
1)G:在命令行模式按G进入文件最后一行
2)gg:在命令行模式按gg进入文件的第一行
3)在最后行模式输入:set nu 显示文件的行号
不显示行号 :set nonu
4)dd:在命令行模式删除一行数据,同样带有剪切的功能
如果要删除多行,直接在dd前面加上数字即可,比如7dd
5)p:黏贴的功能,命令行模式使用
6)u:撤销操作
7)替换内容,在最后行模式操作
:1,$s/nologin/88888888/g
注释:1:表示文件的第一行,不一定十从第一行开始,也可以重其他行开始,只要修改前面的数字即可。
$:表示文件的最后一行 中间的斜线起到了分隔的作用
g:表示通行(全部替换的意思)
\ 表示命令未结束换行继续
注意: \后面不能任何字符,直接回车
$ cat /etc/sysconfig/\
> network-scripts/ifcfg-eth0
补充命令
5、wc(word count)统计命令:统计单词、字符、行数,支持管道符号
$ wc file.log
1 4 19 file.log 行数 单词数 字节数
$ wc -l /etc/passwd 统计行数
$ head -3 /etc/passwd | wc -l
统计某个文件或目录的大小或者是占用的存储空间大小
du -sh /test
四、文件系统常用的命令
1、df命令:查看系统文件占用情况(分区大小)
[root@com ~]# df 选项 挂载点
选项:
-a:显示所有系统文件信息,包括特殊的和隐藏的系统文件
-h:显示文件的一个大小容量,比如KB、MB、GB等
-T: 显示系统文件的一个类型
-m: 以MB为单位显示文件大小容量
-k: 以KB为单位显示文件大小容量,默认都是以KB为大那位的
1)查看root目录下的系统文件
[root@com ~]# df
2)显示文件的大小和占用情况
[root@com ~]# df -h
df –lh 磁盘的详细使用实用信息
2、du命令:统计目录和文件的大小
格式:[root@com ~]# du 选项 目录或文件
选项:
-a:显示每个子文件的磁盘占用量。默认情况下只统计子目录的占用量
-h:显示文件的一个大小容量,比如KB、MB、GB等
-s: 统计总占用量,不显示子文件的占用量
1)查看etc目录及子目录下的文件大小
[root@com ~]# du -h /etc/
2)查看etc目录及子目录的总大小,不显示子目录
[root@com ~]# du -sh /etc
35M /etc
Du –sh / file /
文件的占用大小
补充:du命令和df命令的区别:
1)df命令十从文件系统考虑的,不光要文件的空间,还要统计被命令或系统程序占用的空间,
最常见就是文件已经被删除,但是程序并没有释放空间。所以说用df命令查看文件或目录的剩余空间更准确。
2)du命令是面向文件的,只会统计文件或目录的占用空间,用du命令查看文件或目录更准确。
在root用户的时候
fdisk – l
查看详细的磁盘占用,缓存情况 ,挂载的对应磁盘情况
修复磁盘
fsck / 对应要修复的磁盘 / 它会自动修复
mount查看挂载的磁盘信息
挂载磁盘
mount / 要挂载的磁盘/ 要挂载那个目录下
卸载磁盘
umount / 磁盘/
默认情况下网卡的相关信息都在
etc/sysconfig/network-scripts 中
当ping 0 .0 .0 .0的时候其实ping 的就是本地ip地址(127.0.0.1)
五、用户(adduser)和用户组(groupadd)
1、创建用户:
adduser 用户名
root@com ~]# adduser jerry :创建一个名为jerry的普通用户
jerry:x:501:501::/home/jerry:/bin/bash
2、给用户设置密码
[root@com ~]# passwd jerry(密码为123456)
3、创建号用户后查看用户信息
[root@com ~]# cat /etc/passwd
jerry:x:501:501::/home/jerry:/bin/bash
4、以root管理员用户为例,分析用户信息
root:x:0:0:root:/root:/bin/bash
用户信息一般分为7个字段
1)第1个字段
用户名:root
2)第2个字段:密码位x
查看用户密码文件(只能在管理员用户下查看)
[root@com ~]# cat /etc/shadow
root:$1$6Lb6HpD1$uWDZbUlGEOj8EqHWAj52m/:17254:0:99999:7:::
3)第3个字段:用户的一个UID编号位
0:表示管理员用户
1——499:表示伪用户
500——65535:表示普通用户
4)第4个字段:用户组的GID编号位
一个用户组里面可以有多个用户
[root@com ~]# usermod -G webadmin jerry
查看用户组文件
[root@com ~]# cat /etc/group
root:x:0:
5)第5个字段:说明位(对用户进行解释说明的)
6)第6个字段:用户的一个宿主目录,就是说用户开始登录后的哪个位置
7)第7个字段:shell的命令环境,用户登录后就可以写shell脚本语言,
Linux默认使用的是/bin/bash
5、影子文件(就相当于passwd的影子,用户的密码文件)
查看用户的密码文件
root:$1$6Lb6HpD1$uWDZbUlGEOj8EqHWAj52m/:17254:0:99999: :::
一共有9个字段
1)第一个字段:用户名
2)第二个字段:加密的密码
散列式的一个加密方法:SHA512加密
如果!!、* 表示用户没有密码,不能登录
3)第三个字段:密码最后修改的时间
使用1970年1月1号的第17254天。
4)第四个字段:第二次修改时间和修改的时间差
如果是0就代表没有时间差,忽略不计
5)第五个字段:表示用户密码的一个有效期
99999表示在创建用户之后第99999天内密码有效
6)第六个字段:密码到期前得到的一个警告天数
7)第七个字段:表示密码到期后的宽限天数
如果是8就表示宽限天数为8天
8)第八个字段:账户的失效天数
9)第九个字段:起到一个保留信息的作用(暂无显示任何内容)
6、创建组
创建一个名为wedadmin的组
[root@com ~]# groupadd webadmin
webadmin:x:502:
7、将用户添加到组里
所用到的命令:usermod -G 用户组 用户名
将jerry用户添加到webadmin这个组中
[root@com ~]# usermod -G webadmin jerry
webadmin:x:502:jerry
8、删除一个用户
用到的命令:userdel
[root@com ~]# userdel jerry(删除不彻底)
[root@com ~]# userdel -r jerry(彻底删除用户)
9、删除组
用到的命令:groupdel
[root@com ~]# cat /etc/group
六、用户的模板(/etc/skel)
1)在用户模板目录中添加一条信息
[root@com skel]# vi warning.txt
2)新建一个用户,进入用户的家目录查看是否将用户模板目录里添加的文件拷贝过来
[root@com ~]# cat /home/jerry/warning.txt
welcome beifeng!
七、权限
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
参数 :
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
1、文件的一个权限位
查看Music目录的权限
[root@com ~]# LL -d Music
drwxr-xr-x. 2 root root 4096 Mar 28 19:29 Music
1)第1个位置d:目录
2)第2、3、4个位置:表示所有者对该文件的拥有的权限
r:read 读
w:write 写
x:excute 执行
3)第5、6、7个位置:表示所属组对该文件的拥有的权限
-:表示没有权限的意思
4)第8、9、10个位置:表示其他人对该文件的拥有权限
补充:所有者:u root
所属组:g root
其他人:o
2、设置权限
1)以test文件为例:
[root@com ~]# ll -d test
-rw-r--r--. 1 root root 0 Mar 29 18:50 test
改变所有者的权限:chmod
[root@com ~]# chmod u+x test
[root@com ~]# ll -d test
-rwxr--r--. 1 root root 0 Mar 29 18:50 test
补充:如果test文件其他人的权限修改后,要将修改后的该文件拷贝到其他用户目录下,要将该文件修改后的
具备的所有属性信息都拷贝进去要用到选项-p。
[root@com ~]# chmod o+w test
-rwxr--r--. 1 root root 0 Mar 29 19:16 test
[root@com ~]# cp -p test /home/jerry
[jerry@com ~]$ ll -d test
-rwxr--rw-. 1 root root 0 Mar 29 18:50 test
2)设置其他人和所属组对test文件的执行权限
[root@com ~]# chmod g+x test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
[root@com ~]# chmod o+w test
[root@com ~]# ll -d test
-rwxr--rw-. 1 root root 0 Mar 29 18:50 test
3、设置所有者和所属组
设置test文件的所有者为jerry(用到的命令:chown)
[root@com ~]# chown jerry test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 jerry root 0 Mar 29 18:50 test
设置test文件的所属组为jerry(用到的命令:chgrp)
[root@com ~]# chgrp jerry test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 jerry jerry 0 Mar 29 18:50 test
补充一个简便方法:将test文件的所有者和所属组一起改成root
[root@com ~]# chown root:root test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
4、用数字进行修改文件的操权限
r:4 w:2 x:1
[root@com ~]# chmod 777 test
[root@com ~]# ll -d test
-rwxrwxrwx. 1 root root 0 Mar 29 18:50 test
课堂作业:如果在普通用户jerry下有一个mysite目录,该目录下的结构为
/mysite/hadoop/mr,他们的操作权限分别是
mysite:jerry root
hadoop:root jerry
mr:root:jerry
要求:将mysite目录及子目录的所有者和所属组都修改成root
用到选项-R
[root@com ~]# chown -R root:root mysite
八、date时间设置
1、设置本地时区
[root@com ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite `/etc/localtime‘? y
2、当前日期和时间
Date
显示日历2017年的日历表 cal 2017
必须要是root用户
Date –s 2017 -03-02 设置年月日
Date –s 14:22:01 设置时分秒
3、以数字的形式显示日期和时间
[root@com ~]# date -d ‘7 day ago‘ ‘+%Y%m%d%H%M‘ (两个根号之间要有空格)
201703231123
4、改写crt外联为中文更改语言环境
用root用户登录。输入【vi /etc/sysconfig/i18n】
如果安装系统为中文系统,则修改【LANG=“zh_CN.UTF-8”】
如果安装系统为英文系统,则修改【LANG=“en_US.UTF-8”】
九、man帮助命令
1、可以查看命令的一些帮助信息
[root@com ~]# man ls
2、可以查看一些配置文件的信息
[root@com ~]# man services
service-name:网络服务名
port:端口号
protocol:协议
aliases:别名
3、查看网络配置文件信息
# service-name port/protocol [aliases ...] [# comment]
discard 9/tcp sink null
十、管道符:|
1、定义:将一个命令的输出结果作为另一个命令输入参数
2、命令格式:[root@com ~]# cat /etc/services | more
注意:前一个命令一定是正确的输出才能执行后面的一个命令
补充:grep——>从一个文件中搜索出一个字符串所在的行数据
[root@com ~]# grep ‘jerry‘ /etc/passwd
jerry:x:501:501::/home/jerry:/bin/bash
3、用grep命令显示jerry所在的行数并标识颜色
[root@com ~]# grep -n --color=auto ‘jerry‘ /etc/passwd
32:jerry:x:501:501::/home/jerry:/bin/bash
4、管道符和grep命令联合使用
1)显示当前系统中的关于ESTABLLSHED的网络文件
[root@com ~]# netstat -an | grep ESTABLISHED
tcp 0 52 192.168.207.120:22 192.168.207.1:5060 ESTABLISHED
2)查看用户文件中的关于‘root‘
[root@com ~]# cat /etc/passwd | grep root
roo t:x:0:0:root:/root:/bin/bash
ope rator:x:11:0:operator:/root:/sbin/nologin
等价于[root@com ~]# grep ‘root‘ /etc/passwd
十一、追加和覆盖
1、追加 >>:以追加的方式将命令正确的输出 输出到文件或设备中去
用法:[root@com ~]# date >> abc
[root@com ~]# cat abc
2017年 03月 30日 星期四 14:13:50 CST
补充:错误信息追加 2 >>:以追加的方式将错误的命令输出 输出到文件或设备中去
[root@com ~]# lss 2>>abc
2017年 03月 30日 星期四 14:13:50 CST
-bash: lss: command not found
2、覆盖 >:以覆盖的方式把命令的正确输出 输出到指定的文件或设备中去
用法:[root@com ~]# date >abc
[root@com ~]# cat abc
2017年 03月 30日 星期四 14:20:53 CST
补充:错误信息的覆盖 2>:以覆盖的方式把命令的错误输出 输出到指定的文件或设备中去
[root@com ~]# lss 2>abc
[root@com ~]# cat abc
-bash: lss: command not found
uname:查看本系统
-r 查看系统内核
Cat /proc/cpuinfo
查看CPU配置信息
Cat /proc/meminfo
查看内存详细信息
十二、关闭防火墙
(一次性的)
service iptables stop --停止
service iptables start --启动
1、禁用Linux的安全子系统,在selinux文件中
路径:/etc/sysconfig/selinux
将设置为禁用:[root@com ~]# vi /etc/sysconfig/selinux SELINUX= disabled
2、查看防火墙状态:[root@com ~]# service iptables status
3、关闭防火墙:
[root@com ~]# service iptables stop
iptables:清除防火墙规则:[确定]
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:正在卸载模块:[确定]
4、设置开机是否启动相关服务(可以理解为永久性修改)
查看开始是否自启动
[root@com ~]# chkconfig
NetworkManager 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
abrt-ccpp 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
abrtd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
acpid 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
.......
5、关闭防火墙设置开机不启动
[root@com ~]# chkconfig iptables off
[root@com ~]# service iptables status
iptables:未运行防火墙。(表示Linux中的防火墙成功被关闭)
十三、sudo权限
文件所在位置/etc/sudoers
1、它的操作对象是系统命令(系统命令是存放在/bin或/sbin)
2、命令格式:visudo--->给普通用户赋予管理员的权限操作
[root@com ~]# visudo (管理员身份运行)
root ALL=(ALL)-->使用的身份 ALL
用户 被管理的主机地址 授权的命令
jerry ALL=(root)NOPASSWD:ALL
3、用普通用户操作管理员的命令的话要加上 sudo + 系统命令
比如:[jerry@com ~]$ sudo reboot————》重启系统
十四、压缩和解压缩
1、压缩
在linux系统压缩格式有:
.gz (gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz)
.tar ()
.tar.gz
gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz
举例:在root家目录下创建一个file文件,将/etc/services文件拷贝到file文件中去,
然后使用jerry用户进行对file文件的压缩。压缩后格式为.gz
[jerry@com ~]$ sudo gzip /root/file
file.gz
2、解压缩文件
gunzip命令——>解压.gz压缩包命令
[jerry@com ~]$ sudo gunzip /root/file.gz
file
3、压缩文件或目录为.tar
命令格式:sudo tar 文件或目录(可以保留原文件)
举例:用jerry用户将root用户下的file文件拷贝到/opt下,然后用jerry用户将file文件压缩成file.tar格式
[jerry@com opt]$ sudo tar -cvf file.tar file
file
[jerry@com opt]$ ls
file file.tar rh
4、压缩成.tar.gz格式(常用的压缩类型)
[jerry@com opt]$ sudo gzip file.tar
[jerry@com opt]$ ls
file file.tar.gz rh
解压:
[jerry@com opt]$ sudo tar -zxf file.tar.gz -C ./
[jerry@com opt]$ ls
file file.tar.gz rh
[jerry@com opt]$ sudo tar -zxf file.tar.gz -C /root
[jerry@com opt]$ sudo ls /root
file
-c:建立一个压缩文件的参数指令
-x:解开一个压缩文件的参数指令
-t:查看tarfile里面的文件
-f:使用档名,请留意f之后要立即接上档名,不要再加参数。
-C;指定解压后文件存放的位置
十五、Linux下配置JDK环境变量
1、解压jdk1.7
首先在/opt目录下创建一个softwares目录,专门存放压缩文件
在/opt目录下创建一个modules目录,专门存放解压缩文件
[jerry@com softwares]$ sudo tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
[jerry@com softwares]$ ls /opt/modules/
jdk1.7.0_67
2、修改配置信息(千万不能写错)
[jerry@com ~]$ sudo vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
3、生效修改后的配置文件
[root@com ~]# source /etc/profile
4、查看jdk是否安装成功
[root@com ~]# java -version
java version "1.7.0_67"
十六、find搜索命令
搜索命令会消耗系统的大量资源
语法格式:find 搜索范围 搜索内容
1、根据文件名搜索
a.根据具体的文件名
[root@com ~]# find / -name init
/sbin/init
/lib/alsa/init
b.模糊查询带有关键字init的文件
[root@com ~]# find /etc -name *init*
/etc/pam.d/run_init
/etc/X11/xinit/xinitrc-common
c.查找以init关键字为开头的文件
[root@com ~]# find /etc -name init*
d.查找以init后面三个字符的文件
[root@com ~]# find /etc/ -iname init???
/etc/inittab
注释:*号匹配的是任意字符,也叫通配符
?号是匹配的单个字符
注意:-iname不区分大小写
[root@com ~]# find /etc/ -iname INIT???
/etc/inittab
2、根据文件的大小搜索
-size,它有两个指定模式,一个是+:大于,一个-:小于,不加符号表示=
[root@com ~]# find / -size +2M
[root@com ~]# find / -size -2M
[root@com ~]# find / -size 2M
3、根据文件的类型去搜索
a.根据文件类型搜索 (f)
[root@com ~]# find /etc -name init* -type f
/etc/init/init-system-dbus.conf
/etc/inittab
b.根据目录类型搜索(d)
[root@com ~]# find /etc -name init* -type d
/etc/init
/etc/rc.d/init.d
Linux软件安装(root用户)
1.RPM命令
检查某个软件是否安装
qa|grep java 查看java是否安装
e -- nodeps 卸载软件 卸载多个的时候用空格隔开
ivh .rpm 安装
2.tar命令(不推荐)
源码编译 的方式安装软件
3.解压软件
$ unzip xxx.zip
压缩
Zip yy.zip 文件
tar软件(大数据一般的软件都是tar包)
解压
tar –zxvf xxx.tar.gz (解压到当前目录下)
tar –zxvf xxx.tar.gz -C / 文件目录/解压到指定的位置下
tar - zcvf xx.tar.gz 目录
十七、Linux软件包的管理
1、Linux中的软件包主要针对于服务器的
2、windows中软件包不能在Linux中直接使用
3、Linux中的软件包的分类
1)源码包:一般Linux系统中的内核里面才存在的源码包,特点是开源免费。
2)二进制包:
特点:*比较常用,是经过编译的,简化软件包的一个操作。
*不能看到源码
*安装速度要比源码包快
*具有依赖性,安装起来非常繁琐
二进制包常用的有:rpm包——》系统默认的包
yum——》自动解析依赖性,针对于解决rpm包的依赖性
十八、RPM包管理
1、rpm包的一个命名规则:tftp -server-0.49-7.el6.x86_64.rpm
tftp -server---->软件包名
0.49-7————>软件的版本号
el6.x86_64——》适合什么系统
rpm——》包的类型
2、rpm包一个依赖性
1)树形依赖:a->b-c 安装软件包a时,要求先安装软件包b,在安装软件包b时要求先安装软件包c...
2)环形依赖:a->b-c-a :重复回头安装,很繁琐
3、首先要对光驱进行挂载:mount命令
[root@com ~]# mount /dev/cdrom /media
补充:进入挂载的光驱目录下,所有的挂载文件都在 /media/Packages
查看Packages里面挂载的软件包总条数:
[root@com Packages]# ls | wc -l
3956
4、rpm包的管理
a.安装一个软件包:
依赖安装:
[root@com Packages]# rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm
warning: mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
libodbcinst.so.2()(64bit) is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
unixODBC is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
一次性安装成功:
[root@com Packages]# rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
warning: zlib-devel-1.2.3-29.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:zlib-devel ########################################### [100%]
b.卸载安装包:(不加包的后缀名)
命令格式:[root@com Packages]# rpm -e zlib-devel-1.2.3-29.el6.x86_64
c.查询
*查询rpm包安装是否成功(不加包的后缀名)
[root@com Packages]# rpm -q zlib-devel-1.2.3-29.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
*查询所有已经安装好的rpm包
[root@com Packages]# rpm -qa
*查询httpd主包是否安装
[root@com Packages]# rpm -q httpd
httpd-2.2.15-26.el6.centos.x86_64
*查询软件包的一个详情信息
[root@com Packages]# rpm -qi httpd
*查询系统文件属于哪个包 选项-qf(f表示文件)
1)查询ls命令属于哪个rpm包
[root@com Packages]# rpm -qf /bin/ls
coreutils-8.4-19.el6.x86_64
2)查询ntp.conf这个系统脚本文件属于属于哪个包
[root@com Packages]# rpm -qf /etc/ntp.conf
ntp-4.2.4p8-3.el6.centos.x86_64
十九、yum命令
1、作用:用来解决rpm包的依赖性
2、使用它的条件:需要可用的外网
3、特点:方便、快捷、自动解析依赖
麻烦的是需要搭建源,比较麻烦
4、命令格式:#yum
*列出系统中所有已经安装好的rpm包
[root@com ~]# yum list
yum-utils.noarch 1.1.30-37.el6 base
包名 版本 仓库名
*查看httpd-tools包
[root@com ~]# yum list | grep httpd-tools
httpd-tools.x86_64 2.2.15-26.el6.centos @anaconda-CentOS-201303020151.x86_64/6.4
httpd-tools.x86_64 2.2.15-56.el6.centos.3 updates
@anaconda-CentOS-201303020151.x86_64/6.4————》表示该包已经安装成功
5、安装(不加后缀名)
*选择确定安装:
[root@com ~]# yum install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
y
Complete!
*自动下载安装:
[root@com ~]# yum -y install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
Complete!
*卸载软件包:
[root@com ~]# yum -y remove mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
Complete!
6、yum仓库
路径位置:/etc/yum.repos.d/
查看仓库里面的4个配置文件
[root@com yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
以CentOS-Base.repo为例
[root@com yum.repos.d]# cat CentOS-Base.repo
gpgcheck=1——>代表是否开启验证
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 ——》校验公密所在的位置。
有时候校验失败:
*ping不通外网
*包根本无法下载(配置仓库信息错误)
shell编程
一、shell编程的概念
1、shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面
系统程序。用户可以通过shell来启动、挂载、停止甚至编写一些程序。
2、shell还是功能强大的编程语言,易调试,易编辑、灵活性强,shell是结识知识性的脚本语言。
在shell中直接调用Linux中系统命令。
二、shell执行原理
1. 在我们计算机语言中,最底层是硬件,硬件是通过内核进行管理的。内核通过管理硬件进行功能的实现,
但是在计算机语言里底层硬件只能识别0101...的机器语言,无法识别a,b,c,asc码语言。在这中间就需要一个
翻译机制进行编译,就是所谓的shell编辑器,shell编辑器可以讲外层输入的asc码翻译成计算机能识别的机器语言,
所以说内核要通过shell编辑器进行翻译才能对硬件进行管理。
2.反之,硬件要将输入的请求响应给外层应用,那么我们内核是无法识硬件的机器语言,
那么这时shell编辑器也会将硬件处理的机器语言翻译成asc语言给内核,内核再进行shell编辑器反馈给外层应用。
最后就会得到我们想要的结果了!
三、shell的分类
1、Bourne Shell(bshell):从1979年起在unix系统中开始使用
它的主要文件是:sh、bash、zsh、psh
2、C shell(cshell):主要是一个升级版本
它的主要文件是:csh、tcsh
注意点:bshell和cshell不能兼容,它们之间是独立的
bash和sh是可以相互兼容的。
四、Linux中支持的shell
[root@com ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
五、shell脚本的一个执行方式:
首先学一个回显命令:echo
[root@com ~]# echo laowang
laowang
1、在root目录下创建一个sh目录专门存放shell脚本语言
[root@com ~]# mkdir sh
sh
2、在sh目录下写一个.sh类型的脚本语言,比如hello.sh
[root@com sh]# vi hello.sh
#!/bin/bash (他不是注释,它代表一个标识,标称当前写的程序是shell脚本,不能省略)
#fanjun(weibo.com/beifeng)
echo "fan jun is the most honest man in beifeng!"
3、执行写好的脚本
第一种方式执行:通过bash或sh调用执行脚本语言
a.通过相对路径直接加脚本名执行
[root@com sh]# bash hello.sh
fan jun is the most honest man in beifeng!
b.通过绝对路径直接加脚本名执行
[root@com ~]# sh /root/sh/hello.sh
fan jun is the most honest man in beifeng!
第二种方式执行:直接通过写路径执行脚本语言
前提:首先要给我们写好的脚本语言赋予755权限
[root@com sh]# chmod 755 hello.sh
-rwxr-xr-x. 1 root root 89 3月 31 11:27 hello.sh
a.通过相对路径执行
[root@com sh]# ./hello.sh
fan jun is the most honest man in beifeng!
b.通过绝对路径执行
[root@com ~]# /root/sh/hello.sh
fan jun is the most honest man in beifeng!
六、shell变量类型(4种变量)
1、用户自定义变量(只能在当前的shell中生效)
1)常用的调用命令:echo $变量名
2)定义一个简单的变量
[root@com ~]# name=java17
[root@com ~]# echo $name
java17
3)变量的一个叠加
[root@com ~]# aa=123
[root@com ~]# aa="$aa"456
[root@com ~]# echo $aa
123456
变量叠加的第二种方式
[root@com ~]# abc=123
[root@com ~]# abc=${abc}456
[root@com ~]# echo $abc
123456
4)查看变量:set命令
root@com ~]# set
5)变量删除
[root@com ~]# unset abc
2、环境变量(系统运行时缩用到的变量)
特点:*它不仅在当前的shell种有效,在子shell中也有效
*如果把环境变量写道特定的文件中,那么该环境变量在所有的shell中都有效
举例说明:
1)申明一个环境变量:export 变量名=变量值
[root@com ~]# export age=18
2)查看环境变量
[root@com ~]# env
3)删除环境变量
[root@com ~]# unset age
4)环境变量的类型
a.系统环境变量:从U你在/etc/profile
它是系统全局生效的配置文件,系统下所有的用户都能共享该文件
b.用户环境变量:存在 ~/.bash_profile 文件中定义的变量
每个用户目录下都会有一个用户变量,用来保存每个用户的环境变量,只针对某一个用户生效,
其他用户不能共享。
3、位置变量
获取执行脚本文件时所传入的参数,将传入的参数保存在位置变量中,以便在脚本中可以使用这些变量
举例说明:在脚本里面编写位置变量
[root@com sh]# vi 1.sh
#!/bin/bash
echo $0
echo $2
echo $3
echo $1
给位置变量传参
[root@com sh]# sh 1.sh start stop restart
1.sh($0指示回显脚本名称)
stop
restart
start
注意:a.执行shell脚本传参时,每个参数之间要用空格隔开。
b.如果编写脚本语言时不写位置变量,那么执行脚本传参时就不能有参数显示
[root@com sh]# vi 2.sh
#!/bin/bash
echo $0
[root@com sh]# bash 2.sh start stop restart
2.sh
4、预定义变量
$0:显示脚本名称
$!:进程中的PID号,每个进程都有一个PID号
$$:当前进程中的ID
$#:当前shell的参数个数
$*:整体显示所有参数的内容
$@:逐个显示所有参数内容
$?:判断表示程序退出的代码(返回0代表成功,非0代表失败)
举例1:$?的使用
正确退出返回0
[root@com sh]# ls /etc
[root@com sh]# echo $?
0
错误退出返回非0
[root@com sh]# ls /etc/hahaha
[root@com sh]# echo $?
2
举例2:使用S#显示参数的个数
[root@com sh]# vi 3.sh
#!/bin/bash
echo $#
[root@com sh]# bash 3.sh start stop restart
3
举例3:$*的使用
[root@com sh]# vi 4.sh
#!/bin/sh
echo $*
[root@com sh]# bash 4.sh start stop restart
start stop restart
举例4:$@的使用
[root@com sh]# vi 5.sh
#!/bin/bash
echo $@
[root@com sh]# bash 5.sh start stop restart
start stop restart
七、逻辑符号
1、逻辑与:&&,前面的命令执行成功后才会执行后面的命令
格式:命令1 && 命令2
举例说明:[root@com tmp]# cat /etc/passwd && mkdir /tmp/haha
[root@com ~]# ll -d /tmp/haha
drwxr-xr-x. 2 root root 4096 3月 31 15:23 /tmp/haha
2、逻辑或:||,前面一个命令执行失败才会执行后面一个命令
但是如果前面一个命令执行成功,后面一个命令不会执行
举例说明:[root@com ~]# cat /etc/passwdord || mkdir /tmp/hehe
cat: /etc/passwdord: 没有那个文件或目录
[root@com ~]# cat /etc/passwd || mkdir /tmp/xixi(不会执行后面这个命令
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
3、无逻辑符号 ; ----->多个命令顺序执行,命令之间没有任何逻辑关系(同时执行多个命令)
[root@com ~]# ls;date;cd/user1;pwd
abc Desktop gebilaowang Music sh text.txt
anaconda-ks.cfg Documents install.log Pictures Templates Videos
beifeneg Downloads install.log.syslog program file test warning.txt
beifeng file java17.txt Public test.txt
2017年 03月 31日 星期五 15:33:24 CST
bash: cd/user1: 没有那个文件或目录/root
如果有命令错误,则那个命令不执行,并在最后面提示对应的错误
八、shell的算术运算
补充:命令--->declare :说明变量的类型
格式:#declare +/- 选项 变量名
选项 -:给变量设定类型属性
+:取消变量的类型属性
-i:将变量申明为整数类型
-x:将变量申明为环境变量
-p:显示指定变量被声明的类型
1)数值运算方法1:
[root@com ~]# aa=11
[root@com ~]# bb=22
[root@com ~]# declare -i cc=$aa+$bb
[root@com ~]# echo $cc
33
2)数值运算方法2:(不推荐使用)
[root@com ~]# dd=$(expr $aa + $bb)
[root@com ~]# echo $dd
33
3)数值运算方法3:
[root@com ~]# ee=$(($aa+$bb))
[root@com ~]# echo $ee
33
4)数值运算方法4:
[root@com ~]# ff=$[$aa+$bb]
[root@com ~]# echo $ff
33
九、内置测试判断
1、定义字符串必须加上双引号
[root@com ~]# a="I am"
[root@com ~]# echo $a
I am
2、判断字符串之间是否相等,必须加上双引号
[root@com ~]# [ "$a" = "$b" ];echo $?
0
[root@com ~]# c="I love you"
[root@com ~]# [ "$a" = "$c" ];echo $?
1
3、判断用户输入的是否是字母y,满足其中一个条件就可以完成表达式
[root@com ~]# [ "$Yn"="Y" -o "$Yn"="y" ];echo $?
0
4、-e 文件名,如果文件存在则为真
[root@com ~]# [ -e /etc/passwd ];echo $?
0
[root@com ~]# [ -e /etc/ ];echo $?
0
5、-r 文件名 如果文件存在且可读则为真
注意不再当前位置需要加上绝对路径
[root@com ~]# [ -r /root/passwd ];echo $?
1
6、-w 文件名 如果文件存在且可写则为真
[root@com ~]# [ -w /etc/passwd ];echo $?
0
7、-x 文件名 如果文件存在且可执行则为真
[root@com ~]# [ -x /etc/passwd ];echo $?
1
第一种测试方式
1、数值比较:用到一些选项
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
注意:在数值比较中不能使用>、<或 =
举例1:[root@com sh]# vi 6.sh
#!/bin/bash
a=9
b=15
if [ $a -lt $b ]
then
echo smaller
[root@com sh]# sh 6.sh
smaller
2、字符串的比较:分为5种比较方式
= :等于
!= :不等于
-z:长度为0则为true
-n:长度不为0则为true
str:字符串不为空则为true
举例2:[root@com sh]# vi 7.sh
#!/bin/sh
str1="abc"
str2="abc"
str3=
if [ $str1 = $str2 ]
then
echo equal
fi
[root@com sh]# bash 7.sh
equal
3、文件的测试或比较
-d:如果是目录则为真
-f:如果是文件则为真
-r:如果可读则为真
-w:如果可写则为真
-x:如果可执行则为真
举例3:[root@com sh]# vi 8.sh
#!/bin/sh
if [ -f $1 ]
then
echo is file
fi
[root@com sh]# bash 8.sh
is file
第二方式:
[root@com sh]# vi 9.sh
#!/bin/sh
if test 10 -gt 9
then
echo bigger
fi
[root@com sh]# bash 9.sh
bigger
十、shell控制语句
第一个:if
语法:if 条件判断
then
command....
fi
第一种写法举例: [root@com sh]# vi 9.sh
#!/bin/sh
if test 10 -gt 9
then
echo bigger
fi
[root@com sh]# bash 9.sh
bigger
第二种写法举例: if 条件语句
then
command....
else
comand....
fi
[root@com sh]# vi 10.sh
#!/bin/sh
if [ -d /home/jerry/tmp ]
then
ls/home/jerry/tmp
else
mkdir /home/jerry/tmp
echo 目录创建成功
fi
[root@com sh]# bash 10.sh
目录创建成功
第三种写法举例: if 条件语句
then
command...
elif 条件语句
then
command...
elif 条件语句
then
command...
........
else 条件语句
command...
fi
#!/bin/sh
#read score and choose level
#read 是一种交互式用法,他会读取设备输入
echo “请输入score:”
read score
if [ $score -ge 90 ]
then
echo "levelA";
elif test $score -ge 80 -a $score -lt 90
then
echo "levelB";
elif [ $score -ge 70 -a $score -lt 80 ]
then
echo "levelC"
elif [ $score -ge 60 ]&&[ $score -lt 70 ]
then
echo "levelD"
else
echo "不及格"
fi
[root@com sh]# bash 11.sh
90
levelA
[root@com sh]# bash 11.sh
95
levelA
[root@com sh]# bash 11.sh
85
levelB
[root@com sh]# bash 11.sh
75
levelC
[root@com sh]# bash 11.sh
60
levelD
[root@com sh]# bash 11.sh
45
不及格
第二个循环:for循环
for [ 循环条件:循环控制]
do
循环体
echo command....
done
[root@com sh]# vi 12.sh
#!/bin/sh
sum=0
for ((i=0;i<10;i++))
do
echo $i
sum=$((sum+i))
done
echo $sum
[root@com sh]# bash 12.sh
0
1
2
3
4
5
6
7
8
9
45
[root@com sh]# vi 13.bash
for MONTH in Jan Feb Mar Apr May Jun July Aug Sep Oct Nov Dev
do
echo $MONTH
done
[root@com sh]# bash 13.bash
Jan
Feb
Mar
Apr
May
Jun
July
Aug
Sep
Oct
Nov
Dev
while循环
while [循环条件]
do
[循环体]
[控制语句]
done
[root@com sh]# vi 14.bash
#!/bin/sh
i=1
while [ $i -le 10 ]
do
SUM=$((SUM+i))
i=$[ i + 1 ]
done
echo $SUM
[root@com sh]# bash 14.bash
55
case的用法
第一种:
[root@com sh]# vi 15.bash
#!/bin/sh
echo "input from : one two three"
read input
case $input in
one)echo "your input is one"
;;
two)echo "your input is two"
;;
three)echo "your input is three"
;;
*)echo "your input $input"
esac
[root@com sh]# bash 15.bash
input from : one two three
one
your input is one
[root@com sh]#
[root@com sh]# bash 15.bash
input from : one two three
oen
your input oen
[root@com sh]# bash 15.bash
input from : one two three
two
your input is two
[root@com sh]# bash 15.bash
input from : one two three
three
your input is three
[root@com sh]# bash 15.bash
input from : one two three
haha
your input haha
第二种写法:
[root@com sh]# vi 16.bash
#!/bin/bash
echo "input from : one two three"
read input
case $input in
one | two )echo "your input is one or two"
;;
three | four )echo "your input is three or four"
;;
five | six )echo "your input is five or six"
;;
*)echo "your inoujt is $input"
esac
[root@com sh]# bash 16.bash
input from : one two three
one
your input is one or two
[root@com sh]# bash 16.bash
input from : one two three
two
your input is one or two
[root@com sh]#
[root@com sh]# bash 16.bash
input from : one two three
three
your input is three or four
[root@com sh]# bash 16.bash
input from : one two three
haha
your inoujt is haha
系统的管理命令
1、top:查看系统资源
每隔3秒更新一次,按q退出浏览状态
2、free:查看内存信息
选项 -m:就是以MB格式显示
[root@com ~]# free -m
total used free shared buffers cached
Mem: 1869 1253 616 0 52 867
-/+ buffers/cache: 333 1536
Swap: 3999 0 3999
3、df -l 查看硬盘分区信息
[root@com ~]# df -l
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 47269816 3388120 41480468 8% /
tmpfs 957344 76 957268 1% /dev/shm
/dev/sda1 297485 37256 244869 14% /boot
/dev/sr0 4251346 4251346 0 100% /media
4、ps -ef 查看系统的进程
[root@com ~]# ps -ef | grep crond
root 2127 1 0 09:36 ? 00:00:01 crond
root 6830 5112 0 17:44 pts/0 00:00:00 grep crond
5、kill 杀死正在进行进程
选项 -9
kill -9 端口
6、ifconfig:查看ip、子网掩码。。
7、ping 检测网络质量和网络连接
ping 主机名
ping 地址 域名
8、netstat:查看网络端口
选项:-t:监控tcp协议的进程
-l:listnning
-n:显示端口信息
-p:显示进程的PID
卸载系统自带的jdk
1、查询jdk:rpm -qa | grep java
卸载系统自带JDK
1、查询JDK: rpm -qa | grep java
2、卸载: rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
一、磁盘管理(添加硬盘、分区、挂载)
磁盘管理:
*如何进行磁盘分区
*如何对磁盘进行格式化
*如何对磁盘进行挂载
1、查看系统所有设备情况
[root@com ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes
2、查看系统文件设备目录
[root@com ~]# ls -l /dev
brw-rw----. 1 root disk 8, 0 3月 31 09:35 sda
brw-rw----. 1 root disk 8, 1 3月 31 09:35 sda1
brw-rw----. 1 root disk 8, 2 3月 31 09:35 sda2
b:代表是块(block)设备文件
sda:Linux系统中的一块硬盘
sda1、sda2:代表第一块硬盘的第一个分区和第二个分区
d:disk 代表硬盘的意思 s:代表接口的意思 SSD:固态硬盘
3、硬盘的接口种类
*服务端:sata、sas
个人:ide、scis(用的比较多)
磁盘管理
1、分配主分区(先要关闭虚拟机)
*添加一个100G的硬盘
进入虚拟机编辑设置——》添加一个100G硬盘——》完成
*进行磁盘的分区 [root@com ~]# fdisk /dev/sbd
e extended ——》扩展分区
p primary partition (1-4) ——》主分区
主分区和扩展分区:<=4 3+1(主3,扩2) 2+1(主2,扩1)
2、分配扩展分区(扩展分区不能直接使用,要对它进行逻辑分区才能够使用)
3、对扩展分区进行逻辑分区
4、格式化逻辑分区[root@com ~]# mkfs.ext4 /dev/sdb5
5、挂载:临时挂载:[root@com ~]# mount /dev/sdb5 /mnt
永久挂载:[root@com ~]# vi /etc/fstab 在最后行添加
/dev/sdb5 /mnt ext4 defaults 0 0
6、查看磁盘分区:
[root@com ~]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 46G 3.3G 40G 8% /
tmpfs 935M 72K 935M 1% /dev/shm
/dev/sda1 291M 37M 240M 14% /boot
/dev/sdb5 15G 166M 14G 2% /mnt
三)Crontab计划任务
-->周期性执行计划任务
选项使用:
crontab -l (list ) #查看目前的计划任务列表
crontab -r (remove) #删除计划任务
crontab -e (eidt) #编辑周期性计划任务
进程名称是crond
ps -ef | grep crond $查看此进程是否开启
默认进程是开启的,如果没有开启,可以使用命令手动开启
# service crond status
# service crond start
# service crond stop
# service crond restart
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * *
分钟 小时 天(of月) 月(of年) 星期(of周)
每天晚上18:00执行一次拷贝/home/uer01/2.log文件到/opt/software的任务
0 18 * * * /bin/cp /home/uer01/2.log /opt/software
15 18 * * * /bin/cp /home/uer01/2.log /opt/software
每天晚上6点到第二天早上6点 每15分钟记录一次时间到/home/uer01/2.log文件中
*/15 18-23,0-6 * * * /bin/date >> /home/user01/2.log
0,15,30,45 18-23,0-6 * * * /bin/date -R >> /home/user01/2.log
注意:如果是离散的值,使用“,”进行分割
如果是连续的值,使用“-”进行连接
0 6-12/2 * * 7 /bin/sh /home/user01/datelog.sh
datelog.sh
#!/bin/sh
/bin/echo "当前时间是:" >> /home/user01/2.log
/bin/date -R >> /home/user01/2.log
三 vi编辑器 高级特性
vi快捷方式
显示行号: set nu,进入最后行模式使用
光标快速移动到第一行,小写gg, 命令模式使用
光标快速移动到最后一行,大写G, 命令模式使用
删除一行,小写dd,(带有剪切功能)命令模式使用
粘贴一行,小写p,命令模式使用
删除多行,小写dd,加上数字,比如三行就是3dd,命令模式使用
撤销上一步的操作,小写u,命令行模式使用
删除、拷贝命令
在命令模式下
dd 剪切一行
ndd 剪切光标下方n行
yy 复制一行
nyy 复制光标下方n行
p 粘贴
替换内容
在最后行模式下使用
1,$s/nologin/88888/g
->1表示第一行
->$表示最后一行
(1,$)表示的是一个范围,比如(5,$)
->/nologin/88888/表示替换和被替换
-g表示通行
34s/user01/user02
搜索命令
在命令模式下,搜索一个字符串string
/string
n 继续搜索下一个
N 搜索上一个出现的位置
linux