工作内容##
今天的工作内容分为2部分
(1) 学习linu线下课程
(2) 完成5道linux练习题
- 文件检测和目录创建
如果某路径不存在,则将其创建为目录;否则显示其存在,并输出其是目录还是文件
file_path="$1" input_a_dir=" is a directory"; input_a_file=" is a file"; file_creation=" creates " if [ -d $file_path ] ; then echo "$file_path$input_a_dir" fi if [ -f "$1" ]; then echo "$file_path$input_a_file" fi if [ ! -e $file_path ] ; then echo "$file_path$file_creation" mkdir "$file_path" fi
- 文件行统计
(1) 传递两个文本文件路径给脚本
(2) 输出两个文件中空行数较多的文件名字及其空行的个数
(3) 输出两个文件中总行数较多的文件名字及其总行数
`` #!/bin/sh 2.sh
#------------------varibles---------------------------------
first_file_name="$1"
second_file_name="$2"
#-------------------------judge file exist-----------------------------------
if [ ! -e $first_file_name ]
then
echo $first_file_name" is not exist"
exit 0
fi
if [ ! -e $second_file_name ]
then
echo $second_file_name" is not exist"
exit 0
fi
#--------------------------count empty lines----------------------
firtst_file_empty_line=$(sed -i '/^$/d' $1 |wc -l)
second_file_empty_line=$(sed -i '/^$/d' $2 | wc -l)
#------------------------------count total lines--------------------------
firtst_file_line=$(cat "$first_file_name"|wc -l )
second_file_line=$(cat "$second_file_name"|wc -l )
#--------------echo most empty lines------------------------------------
echo "most empty lines"
if [ $firtst_file_empty_line -lt $second_file_empty_line ] ;
then
echo $first_file_name":""$firtst_file_empty_line"
else
echo $second_file_name":""$second_file_empty_line"
fi
#--------------echo most total lines------------------------------------
echo "most total lines"
if [ $firtst_file_line -lt $second_file_line ] ;
then
echo $first_file_name":""$firtst_file_line"
else
echo $second_file_name":"echo "$second_file_line"
fi ``
-
文件查找和处理
将指定目录下大于10K的文件转移到/tmp目录下. 提示: 可以使用find命令完成 -
定时任务
使用crontab, 实现在工作日(周一到周五),从早上10点到晚上七点,每个两小时提示休息。
注: Ubuntu桌面下可以使用notify-send 发送通知消息。 -
日志分析
分析网站日志,找出所有在一分钟请求次数超过60次的ip.
注:不考虑跨分钟的情况
(3) 整理这两天学习SHELL的笔记
心得体会##
(1) 课程笔记####
昨天在看视频的时候整理了视频中我还并不熟悉的一些命令。今天听完线下课程,我又加入了今天的一些重点。以下是我的一些课程笔记:
-
ls -lsrt
-s:显示文件和目录的大小,以区块为单位
-t:用文件和目录的更改时间排序
-R:递归处理,将指定目录下的所有文件及子目录一并处理
这个命令可以讲当前目录下所有文件按照更改时间排序并显示相关信息 -
硬链接和软连接
默认情况下,ln命令产生硬链接。
硬链接:多个文件名指向同一索引节点.在linux 中,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接:软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 -
du和df
du 统计文件和文件夹所占用的大小
df 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。
*find 查找
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。 -
sort
默认将文件一行当做一个字符串按照字典序进行排序
-k 指定列
-n 按照数字排序
-r 倒序 -
uniq 去重
限制条件:相同的行必须位于一起,中间有间隔无法进行.
-d: 仅显示重复出现的行列。 -
awk
按行处理输入内容,默认按照空格来切分字符串 -
wget
-
curl
-
get请求相关
-
curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
-
curl -i "http://www.baidu.com" 显示全部信息
-
curl -l "http://www.baidu.com" 只显示头部信息
-
curl -v "http://www.baidu.com" 显示get请求全过程解析
-
curl -o:把curl 返回的html、js 写到垃圾回收站[ /dev/null]
-
-
post请求相关
- curl -d "param1=value1¶m2=value2" "http://www.baidu.com"
-
json格式的post请求
- curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}'
http://domain/apis/users.json
进一步参考地址:http://www.cnblogs.com/strongery/p/5390483.html
- curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}'
-
ping
-q 静默输出 -
hostname
获取本机主机名 -
nc 网络发包工具
进一步学习网址 http://blog.csdn.net/xifeijian/article/details/9348277 -
telnet 远程登录和tcp连接测试
-
ssh
-
scp 远程拷贝
-
netstate
-
tcpdump
进程与系统####
-
ps 查看进程信息
ps -ef 进程查看
ps -Lf 线程查看
LWP 线程的线程号
具体可参考http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2185938.html -
free 查看内存使用信息
free -m 以M为单位
free -h 根据数值大小选定单位 -
TOP 查看cpu使用率
-
kill
kill 默认:kill -15
kill -9 无条件终止 -
SHELL数组
-
读取数组 value1=${array_name[1]}
获取数组中的所有元素 -
使用@或*可以获取数组中的所有元素
*SHELL传递参数- $n
n表示一个数字,0为执行的文件名,1为执行脚本的第一个参数,以此类推
- $n
-
特殊字符
%# 传递到脚本的参数个数
$ 以一个单字符串显示所有向脚本传递的参数,以"$1...$n"的形式输出所有参数
$@与$*
相同,但是使用时加引号,并在引号中返回每个参数,以"$1"..."$n"的形式输出所有参数*
区别是在加引号时,#*会变成一整个整体,$@则不会 -
xgars
-
crontable
用来安装,卸载或者列出定时任务列表的命令. -
rsync
-
iostat
-
vmstat
-
atnodes 在集群上运行指定命令
-
tonodes
上传本地文件到集群上
(2) 以下是我练习题的答案####
问题##
1.今天在写作业的时候,发现一个问题,脚本运行结果一直是“未找到命令”,后来将那一行的开头用tab缩进,就停止了报错。
网友评论