- 浏览: 798358 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuhanwm910731:
我现在需要实现复选(非级联选择)的树形下拉菜单,麻烦发给我一份 ...
extjs3.X支持树型的下拉控件 -
shine1200:
“所以咱们现在设置的虚拟路径“/message/upload/ ...
weblogic虚拟路径的配置和使用(2) -
icefireforest:
Fangrn 写道jx_dream 写道楼主,我最近在做树形下 ...
extjs3.X支持树型的下拉控件 -
cloudfile:
谢谢分享!
c++库c#调用开发时需要注意的一点 -
xuweilinbegin:
我也要一份哦:xuweilin15353@163.com,谢谢 ...
extjs3.X支持树型的下拉控件
十二、输入输出重定向及管道
1 什么是过滤器 必须有一个输入和输出
2 什么是标准输入输出
3 怎样改变标准输出
4 输出的种类
5 改变输入
6 管道
linux过滤器:
linux工具/命令分为三种:
过滤器
编辑器
交互式工具
标准输入输出与重定向:
输入 过滤器数据来源 标准输入stdin(0):默认是键盘
输出 过滤器数据去向 标准输出stdout(1):默认是终端屏幕
错误输出 报错讯息与标准输出走不同的I/O通道 标准错误输出stderr(2):默认是终端屏幕
重定向 标准输入输出与错误输出,都可以用特定符号改变数据来源和去向
输入重定向: 使用“<”来重定向输入
很多工具都设置其后接文件名为输入源
也有一些过滤需要添加“<”以明确输入源
追加: 使用“<<”让系统将一次键盘的全部输入,先送入虚拟的当前文档,再一次性输入追加到文档尾部
需要一对字母、符号或字符串作为起始终结标识符
选择任意符号作为起始终结标识符
<<EEE 表示直到发现输入EEE时,才退出输入,或按ctrl+d退出 并显示输出
输出重定向: 使用“>”改变数据输出目标
ls -l /etc > listfile
将文件以长模式显示,后写入listfile文件
文件已有内容会被替代
覆盖与追加: 使用“>”进行输出重定向,文件的原内容会被覆盖
ls -l aa.txt > vi.txt
使用“>> ”,可以将输出追加入文件
ls -l aa.txt >> vi.txt
> 标准正确输出重定向、清空文件、创建文件(输出前先清空以前存在的数据)
2> 标准的错误输出重定向 (输出前先清空以前存在的数据)
&>或2>&1 不管正确或错误的输出都全部重定向
>> 追加重定向,不清空之前的数据
错误输出重定向:系统错误与标准输出使用的I/O管道不同
默认情况系统报错显示到终端屏幕上
使用“2>”将报错信息重定向入一个文件
find / -type s 2> /dev/null
使用“2>>”将报错信息追加入一个文件
find / -name passwd 2>> results
管道:
| 将前一个过滤器的输出直接输入到后一个过滤器
ls -l | grep hosts.conf
允许多重管道
管道前过滤器的输出与管道后过滤器的输入数据类型匹配
例子:
ls /dev |wc -l 统计/dev下有多少文件
du -a | sort -n -r 显示所有文件大小,并按从大到小排序
ls -l /etc |grep '^d' 显示/etc文件夹下所有文件夹
dmesg |more 分屏显示内核信息
使用tr加密: tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"'
tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"' < /etc/passwd > abc.txt
tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"' < /etc/passwd | mail -s "for you"
dlp8410@126.com
十三、 linux系统状态检测及进程控制
1 查询当前系统的信息
2 查询当前系统的状态
3 /proc文件系统 查看内核
4 进程的显示
5 控制进程
6 控制台的前台和后台
系统信息的收集:
hostname 显示或设置主机名
uname 显示系统信息
last 显示最近的用户登录
lastlog 显示每个用户的登录情况
系统状态:
/proc文件系统
free 查看内存的使用情况
df 查看硬盘使用情况
du 查看文件大小
系统日志 tail - f /var/log/messages
常用系统日志:
/var/log/dmesg 核心启动日志
/var/log/messages 系统报错日志
/var/log/maillog 邮件系统日志
/var/log/boot.log 系统引导过程日志
/var/log/cron 记录守护进程派生子进程
/var/log/syslog 记录警告信息
/var/log/wtmp 永久记录用户登录事件
/var/log/xferlog 记录FTP会话
/var/log/secure 安全信息
常见查看日志的方法 tail /var/log/....
了解进程:
系统通过进程来完成工作
每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程
系统和原始进程是init init的PID总是1
一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程
linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性
交互进程 由一个shell启动的进程,交互进程可以在前台运行,也可以在后台运行
批处理进程 这种进程和终端没有联系,是一个进程序列
监控进程 也称守护进程,linux系统启动时启动的进程,并在后台运行。
一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令
作业控制指的是控制正在运行的进程的行为
查看进程状态:
ps [option] 常用参数
-a 显示所有进程,但不包括不隶属于任何一个终端的进程
-u 显示不属于任何一个终端的进程,诸如各类系统网络服务的后台程序
-l 以长模式显示进程信息
-u 显示进程的拥有者信息
在ps的参数中,是否加 - 号,表示不同的参数
ps显示中的stat,
R 正在运行
S 进程睡眠中,通常可以因事件发生而被唤醒
T 进程已停止
D 进程睡眠中,除非发生指定事件,否则不会被唤醒
Z 僵尸进程,例如未能被父进程回收的子进程。通常是一个系统BUG或非法操作
< 高优先级进程
N 低优先级进程
ps选项
-e 显示所有进程
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a 显示终端上的所有进程,包括其他用户的进程
r 只显示正运行的进程
x 显示没有控制终端的进程
--help 显示帮助信息
--version 显示命令的版本信息
pstree 以树状方式表现进程的父子关系
top 系统监控工具
按 M 以内存排序
k 杀掉某个进程
? 帮助
>< 翻页
r 设置优先级
q 退出TOP命令
控制进程:
kill [-signal] PID 向进程传送一个特定的讯号 默认为15(终结)
kill -l 列出所有可以由kill传递的讯号
killall
skill
pkill
进程优先级:
进程俦级 用nice值来表示
nice以一个不同的nice值来运行指令 nice -n -num command
renice改变运行进程的nice值 renice -n PID
renice -n -10 1 调整优先级
控制台的前台和后台:
命令默认在前台运行
但控制台可以都允许多个后台进程,如 find / -name aaa & 直接运行在后台
进程放入后台运行:
command & 将进程直接丢入后台运行
ctrl+z 将正在运行的前台进程暂停,并丢入后台
nohup command & 在shell退出后进程仍执行,作为系统进程
控制台的任务:
jobs 显示系统当前后台任务列表
kill %n 控制第1个任务
fg 将后台进程放入前台,并运行
bg 激活后台暂停的进程
十四、 BASH使用详解
1 shell概念
2 linux下的shell种类与用户shell的控制
3 bash的使用
4 bash的常见技巧与快捷键
5 bash的变量使用
6 常见的bash变量使用
7 bash运算符
8 使用启动脚本定制bash
shell简单介绍:
shell环境
shell产生与发展
shell的显著特点: 命令行解释
使用保留字
使用shell元字符(通配符)
可处理程序命令
使用输入输出重定向和管道
维护一些变量
运行环境变量
支持shell编程
bash介绍:
系统中的shell
改变用户使用的shell
bash命令概要: 如下是几个最常用的bash内部命令
alias 设置bash别名
bg 使一个被挂起的进程在后台继续执行
cd 改变当前工作目录
exit 终止shell
export 使变量的值对当前shell的所有子进程都可见
fc 用来编辑历史命令列表里的命令
fg 使用一个被挂起的进程在前台继续执行
kill 终止某个进程
help 显示bash内部命令的帮助信息
pwd 显示当前工作目录
unalias 删除已定义的别名
bash还有许多命令,但这些是最常用的,想了解更详细的情况,可以man bash
bash变量: 这里有几个最有用的bash变量
包括变量名和简单描述
HISTFILE 用于贮存历史命令的文件
HISTSIZE 历史命令列表的大小
HOME 当前用户的用户目录
OLOPWD 前一个工作目录
PATH 寻找可执行文件的搜索路径 ~/.bash_profile
PS1 命令行的一级提示符
PS2 命令行的二级提示符
PWD 当前工作目录
SECONDS 当前shell开始后所流逝的秒数
bash的特性:
1 命令补齐——TAB键
2 有很多快捷键
3 通配符
4 命令历史记录 history
5 别名 命令别名通常是其它命令的缩写,用来减少键盘输入
6 输入重定向 <
7 输出重定向 >
8 管道 |
9 提示符
10 作业控制(JOB CONTROL)
11 用户化配置bash
bash变量快捷键:
1 TAB: 自动补完命令行与文件名
2 TAB键双击: 可以列出所有匹配的选择
3 Ctrl+c: 结束当前的任务
4 Ctrl+z: 当前任务暂停,并放在后台
5 Ctrl+s: 停止屏幕输出
6 Ctrl+q: 恢复屏幕输出
7 Ctrl+l: 清屏
8 Ctrl+d: 标准输入结束
9 Ctrl+r: 追踪命令
bash在控制台下的其他快捷键:
ctrl+u 删除光标以前的所有字符
ctrl+d 一个字符
ctrl+k 删除光标以后的所有字符
ctrl+h 一个字符
ctrl+t 调换光标前两个字符的次序
ctrl+a 移动光标到最前面
ctrl+e 最后面
ctrl+p 上一个命令
ctrl+n 下一个命令
ctrl+f 移动光标到后一个字符
ctrl+b 移动光标到前一个字符
ctrl+x 标记一个位置
ctrl+c 清除当前的输入 (常用)
使用BASH命令历史: history命令可查询历史操作命令
命令历史中的命令可以被调用
.bash_history中的命令数目由HISTFILESIZE这个变量来决定
history表存储在内存内。用户logout时会记录到用户主目录中.bash_history文件
# history
# set |grep HIS
# history -c 清除命令历史
使用历史命令: 使用!来调用历史指令
ctrl+r在history中查询指令
!$ 获得前面命令行中的最后一项内容
!! 重复执行上一条命令
!a 重复执行上一条以a为首的命令
!100 重复执行第100号命令
bash的变量类型:分环境变量和普通变量
环境变量:可以被子shell引用的变量
普通变量:只在当前shell中有效
set 显示环境变量和普通变量
env 只显示环境变量
export 把普通变量变成环境变量
unset 可以删掉一个变量
alias别名: 为命令定义简单的别名
unalias取消别名记录
alias记录在shell中总是先执行
bash中的运算符:已经接触过的通配符* ? [abc] {a,b,c}等
一些运算符,
如echo $PATH中的$
!10 中的!
另外我们还要学习以下运算符
! !20 !! !$ $AAA * ? [abc] [^abc] {a,b,c} & ~ # %1 ^ "" '' `` \ ; = < > $$
[ ] 加空格有来表示判断 ,判断条件: -f 文件
-l 链接
-d 目录
-c 字符型文件
-b 块设备文件
-x 执行文件
-r 只读文件
-w 可写文件
man bash可查
&& 当前一条指令执行成功时再执行后一条指令
|| 失败时再执行
$$ 显示pid
定制你的bash:
在bash中定制的:命令历史、变量、umask、选项 set -o、alais等
只在当前shell有效,再次打开将恢复成原来shell启动脚本中定义的样子
bash的启动脚本:
全局设置文件: /etc/profile
/etc/bashrc
用户设置文件: ~/.bash_profile
~/.bashrc
bash的其它配置脚本:
~/.bash_logout
~/.bash_history logout时将内存history记录写入
/etc/profile.d/*.sh
十五、 shell脚本编程详解
1 什么是shell脚本编程 其它脚本php,jsp,asp,
系统是由shell脚本搭建的,如/etc/rc.d/rc.sysinit或services命令
shell脚本一般是ASCII码的文本,可以直接编写
脚本中的#表示注释,但是第一行中的#有特殊意义:
如果第一行中:
第一个字符非#:表示这是一个BASH脚本
第一个字符是#,但第二个字符不是!:表示这是一个csh脚本
第一个字符是#,且第二个字符是!:表示调用其后指定的某个程序来执行以下的这个脚本。如#!/usr/bin/python2.2
2 脚本的执行方式
3 脚本的常见流程控制
4 脚本的编写
5 sed及awk的使用
shell脚本: shell script
unix系统的原则有一条:UNIX系统和程序都比较短小,避免交互
所以在完成复杂任务时需要把短小命令组合起来使用,怎样组合呢?就是用shell脚本
shell script通常为text文本文件,shell的脚本最善长用来完成系统管理工作;
shell 有很多种,不同的shell语法是不相同的,如csh的脚本bash不一定可以用
shell脚本可以进行多种形式的交互
整个系统都是由shell脚本来串连的
甚至很多命令就是shell脚本 service 命令、startx命令等等
shell中正则表达式:
正则表达式简介
grep和正则表达式
vi和正则表达式
与shell脚本进行交互:
可以使用参数来传递内容 $1 $2 $3
可以使用命令来进行交互 read 读入数据给变量
echo 输出数据
printf 输出数据
echo "this if input & output!"
read -p "this is read,please input:"readmem
echo "this is echo:$readmem"
printf "this is printf %s" $readmem
shell脚本执行:
输入脚本的绝对路径或相对路径
/root/backup
./backup
bash脚本或tcsh脚本
表示以bash或tcsh来执行脚本 bash /root/backup
再脚本的路径前加 . . ./backup
. /root/backup
bash脚本中的流程控制:
条件判断控制
[] && ||
if
case
循环控制
while
utile
for
break
continue
[ ]
echo $?
vi /etc/rc.d/rc.sysinit
vi /etc/rc.d/init.d/httpd
bash -vx ./b 编译
[]在bash 可以判断真假,
[ $USER = "ding" ] && echo hello ding
[ -f /bin/ls ] && /bin/ls
[ $USER = "ding" ] || echo hello root
-e file已经存在
-f file普通文件
-s file大小不为零
-d file是一个目录
-r file对当前用户可以读取
-w file可写
-x file可执行
-g file的GID标志被设置
-u file的UID标志被设置
-O file是属于当前用户的
-G file的组ID和当前用户相同
file1 -nt file2 文件file1比file2更new
file1 -ot file2 文件file1比file2更old
数值比较时的运算符:
-eq =
-ne !=
-gt >
-lt <
-ge >=
-le <=
-z 为空
-n 不为空
条件判断控制语句if:
if 条件
then 动作
elif 条件
then 动作
else
动作
fi
例子:
if[ $1 = "hello" ]
then
echo "hello!hahah"
fi
if [ $1 = 1 ]; then
if [ $2 = 2 ]; then
echo ok
fi
fi
条件判断控制语句CASE:
case 表达式 in
匹配值1)
动作;;
匹配值2)
动作;;
*)
动作;;
esac
例子:
case $1 in
root)
echo "hello root"
;;
ding)
echo "dear i miss you"
;;
*)
echo "where are you"
;;
esac
循环控制语句for:
for 变量 in 数组
do
动作
done
for,变量自动去数组中取值,每取一次值执行一次循环,
例子:
for i in 1 2 3 4 /etc/*rc
do
echo $!
done
循环控制语句while:
while 条件
do
动作
done
while,当条件为真时,执行do和done间的循环
例子: aaa=0
while [ $1 = "ok" ] && [ $aaa -lt 10 ]
do
aaa=$[$aaa+1] 执行运算
echo "$aaa "
done
循环控制语句until:
until 条件
do
动作
done
例子:
aaa=0
until [ $aaa -gt 9 ]
do
aaa=$[$aaa+1]
echo "$aaa "
done
与while循环只是条件相反
函数的使用:
bash 中的函数定义非常简单
使用:
myfunction()
{
}
取消函数或变量时使用: unset myfunction
例子:计算整数平方的例子
square(){
aaa="$1*$1"
return $aaa
}
square $1
result=$?
echo $result
exit 0
sed: 流编辑器 stream editor
sed编辑器是linux 系统管理员的工具包中最有用的资产之一
sed非常适合脚本中使用,因为不需要进行交互
流编辑器非常适合执行重复的编辑,比如替换文件中的词语等。
使用sed进行替换: sed 's/{old value}/{new value}/'
多次替换: sed -e 's/mike/todd/' -e 's/good/better/'
sed 's/tiger/wolf/; s/after/before/'
了解sed脚本: 编辑内容可以写成脚本
脚本是包含sed命令的文本文件
执行命令列上的编辑指令
sed编辑指令
执行档案内的编辑指令
执行多个档案的编辑
执行sed输出控制
info sed
man sed
awk的使用: awk是一种用于处理文本的编程语言工具
unix/linux功能最强大的数据处理引擎
可以在匹配的行上执行特殊的操作
shell中最常用于截取文本中某一段数据
awk程序: 规则通常由新行来分离
规则包含一个模式和在{}内包含的操作
pattern {action}
运行awk程序: 简单的程序可以在命令行下直接输入:$awk 'program' input file
更长的程序保存在文件中 $awk -f program_file input_file
awk实例: 用awk搜索文件/etc/passwd中包含"bash"字符串的行
$awk '/bash/ { print }' /etc/passwd
更加复杂的awk实例: 统计/project目录下所有属于用户joshua的文件的总大小
#ls -l /project |awk '$3=="joshua" {\sum+=$5 } END {print sum }'
何时使用awk: 从大量的原始数据中产生报告
从其它程序的输出中总结信息
当你需要一个又小又快的文本处理程序的时候
发表评论
-
提供IT系统运维支持、系统优化方案
2012-10-26 14:46 6提供IT系统运维支持、系统优化方案,有多个运维实施经验。 ... -
搭建mpi并行运算中遇到的问题与解决方案
2010-11-28 18:21 4820搭建mpi并行运算中遇到的问题与解决方案 1,[roo ... -
linux bash(1)
2010-11-10 22:22 1459一、LINUX操作系统的基本结构 1 kernel、 ... -
LINUX系统高级应用
2010-11-10 16:18 1207【过滤大log文件】 #!/bin/bash ... -
【转载】ossec主机入侵检查系统架设
2010-09-30 09:51 1282一.OSSEC简要介绍: OSSEC 是一款开源的入 ... -
Linux多路径的使用及介绍
2010-09-25 08:37 1650多路径(multi-path)软件的介绍 普通的电脑主机都是 ... -
服务器出现broken pipe ,connection reset解决方法
2010-08-24 17:34 2882linux下webloigc经常出现broken pipe ... -
ELF文件病毒的分析和编写(转)
2010-08-11 09:46 3044这个文章是从网上搜来的,转来转去也不知道睡是原版的了,所以很抱 ... -
linux下容量不同硬盘的复制
2010-07-28 19:44 2371可以用parted magic光盘来实现 1.用part ... -
Linux 如何加快 dd 命令备份的速度呢
2010-07-28 19:36 2129增加块大小 dd if=.. of=.. bs=128k -
Linux中重定向及管道
2010-07-28 08:44 11661重定向 1.1 重定向符号 > ... -
提供j2ee中间件优化方案和实施
2010-05-11 09:04 384提供j2ee中间件安装优化方案和实施,提供oracle等数据库 ... -
从bind安装到配置全过程.所有linux平台都支持,带注释
2010-04-26 22:11 2467从安装到配置.不会架设DNS的人来.不是RPM安装的. ... -
apache前台代理分发 weblogic集群报错:错误模块 libhttpd.dll,错误地址 0x0001c0a2 解析以及解决方案
2010-04-14 22:28 34472003的报错:错误应用 程序 Apache.exe,版本 ... -
apache 启动httpd.exe 报错 Could not reliably determine the server's fully qualified
2010-04-14 20:35 2339前言:apache虽然能运行,但是看见error.log中 ... -
AIX下比较两个目录文件并同步数据,供参考
2010-03-25 13:06 1746#!/usr/bin/ksh # Compare the t ... -
check 系统账号密码是否过期shell脚本
2010-03-25 12:37 1375自己写的check aix系统用户密码是否过期的shell 脚 ... -
apache日志自动切割
2010-03-24 09:36 2172前几天给国家地震台 ... -
Remounting filesystem read-only硬盘只读,悲剧
2010-03-02 16:36 11486Dec 6 00:06:36 backup kernel: ... -
解决挂载盘柜出现“EXT3-fs error filesystem read-only”
2010-03-02 16:35 4691昨天发现盘柜上的逻辑卷只能读,不能写!,查看盘柜管理页面,无错 ...
相关推荐
linux bash shell 实现源码
linux平台的bash shell开发帮助文档(手册),英文版,版本4.2。日常开发shell翻阅, 章节如下: Definitions:: Some definitions used i n the rest of this manual. Basic Shell Features:: The shell "building ...
linux bash vim配置文件,不错的配置,可以节省大家时间。
Linux的bash练习
资源名称:Linux Bash编程与脚本应用实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记
Bash中文手册,适合Linux shell入门级使用!
这本书介绍了bash大量的细节和广阔的范围,使用大量的例子详细地介绍了 Bash的语法,各种技巧,调试等等的技术,以循序渐进的...而本书除了介绍BASH的知识之外,也有许多有用的关于Linux/UNIX的知识和其他shell的介绍
和之前C++执行Linux Bash命令的方法 一样,Python依然支持system调用和popen()函数来执行linux bash命令。 方法一:system调用 #仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 import os os....
有关bash命令的书
linux shell bash 源码等等
另一个Linux漏洞补丁合集,内附测试使用方法。
高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程!
linux bash 之awk,awk的详尽用法
关于linux bash致命漏洞的情况以及预防措施
Linux Bash Guide Beginner
Bash Shell 管理Linux
Linux Bash脚本编程大全_超清版
到此这篇关于Linux bash:./xxx:无法执行二进制文件报错的文章就介绍到这了,更多相关Linux 无法执行二进制文件 内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!...
Linux_Bash脚本编程大全.pdf