1.绝大多数是处理文本的
cat /proc/cpuinfo
查看物理CPU的个数
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
查看逻辑CPU的个数cat /proc/cpuinfo | grep "processor" | wc -l
查看CPU是核数cat /proc/cpuinfo | grep "cores" | uniq
查看CPU的主频cat /proc/cpuinfo | grep MHz | uniq
cat 命令读取一个或多个文件,并把他们复制到标准输出文件 格式cat [file..]
可以用来连接多个文件
mkdir test
touch v1 v2 v3 v4
#在文件中输入内容
cat v1 v2 v3 v4 > all
#便可生成all文本文件,包含v1到v4的内容
但是如果在cat后面不加入任何参数,那么cat便会将标准输入连接到default 即键盘,
这样就可以接收键盘输入信息,如果在键盘输入^c+d即告知cat已经得到EOF,停止。
如果想要记录下键盘输入的信息到一个文件下,可以采用 cat > *即可
创建文件 cat >name<<EOF
向已有的文件中增加内容 cat >>existing file name<<EOF
当然,还可以把一个文件作为标准输入的源
cat<<EOF>filename
......
EOF
可将<<EOF> ---- EOF 的内容加入到file中
cat<<EOF>>filename
......
EOF
文本内容追加(与上面做区别)
llinux文本过滤器
过滤器可以通过管道来对文本进行筛选
sort 对文本进行排列, 产生一个排列好的列表,通常与命令uniq组合来去除所有的重复行
例子
ls | sort | uniq | less#查看删除重复行后的
ls | sort | uniq -d | less#查看删除的
wc 统计文本的行数,字数,字节数等等
grep 打印匹配行
常用参数
-i可以忽略大小写
-v只输出和模式不匹配行
head 和 tail命令 分别对应查看文件结尾和开头tail -n 10 filename head -n 10 filename (按照行数)
#tail -f /var/log/messages来统计实时更新的日志文件
自定义文件描述符
exec 3<input.txt 创建文件描述符3进行读取 可以这样使用
echo xxxxxxxxxx > input.txt
exec 3<input.txt
cat<&3
小技巧总结(*0* 文章不断更新)
1.如果想删除一个文件而且又把它的备份留在某地,用alias可以这样做
alias rm='cp $@ ../../backupdir && rm $@'
2.一个输入密码禁止回显的shell
#!/bin/bash
echo -e "password"
stty -echo
# 不懂可参照stty有关选项和参数
read password
stty echo
echo
echo Psword read
3.bash -x xxx.sh 用来跟踪调试
自定义格式生成调试信息
#1
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || :
}
for i in {1..10}
do
DEBUG command
done
#2
或者直接在#!/bin/bash -xv 来最方便
4.bomb?
:(){ :|:& };:fork-bomb#很厉害的东西 可以查下原理,简单就是递归生成新进程然后造成拒绝服务攻击 防治办法 /etc/security/limits.conf 修改最大进程数
2.进程管理技巧
在管理进程的过程中需要处理信号,
下面列出常用信号种类和编号
0 从shell 退出
1 SIGHUP 清理并重新读取配置文件继续运行
2 SIGINT 中断
3 SIGQUIT 退出
6 SIGABRT 中止
9 SIGKILL 立即关闭进程
14 SIGALRM 报警时钟
15 SIGTERM 清理并终止
SysV风格 ps -ft <terminal> ps -fu <user>从内核进程表中分别得到每个中断或者用户记录的最好的方法
可以利用管道来过滤进程信息
例如:
ps -eaf | grep -w xxx | grep -v grep
该命令的第三项是为了排除掉匹配的grep的内容,因为运行该命令会产生一个新的grep进程,具有xxx的关键字,会影响信息的准确度
ps -ejH 以树状显示进程
killall -u user processname
区别于kill -signnum pid