Shell 命令积累
1. ##将"/"的文字删除,即输出"/"符号之前的不重复数据,仅仅是打印出,不会改动源文件:cat ~/vob.log | sed 's/\/.*//g' | uniq
2. 删除多余bfagent 进程:
ps aux | grep bfagent | grep Rs | awk '{print $2}'| xargs kill -9
ps -el | grep bfagent | grep -v S | awk '{print $4}'| xargs kill -9
3.全目录拷贝命令:
(cd bay319/ && tar cf - .)| (cd scripts/ && tar xpvf -)
4. 列出home目录大小:
for dir in $(ls /home)
do user=$(ls -ld /home/$dir | awk '{print $3}');su $user -c"du -sh /home/$dir"
done
5.查看sprac 机器配置信息:
prtconf -v;showrev
6.查看solaris 硬件配置信息:
prtdiag -v
7. Solaris 8 的加密算法为DES,而linux 为MD5,solaris 9 以上支持MD5算法。
8. cut -d ":" -f1 ~/nis_user.txt输出用户名
9. 如果想下载一个网站上目录中的所有文件, 我需要执行一长串wget命令, 但这样做会更好:
wget -nd -r -l1 --no-parent http://www.foo.com/mp3/
这条命令可以执行的很好,但有时会下载像 index.@xx 这样一些我不想要的文件. 如果你知道想要文件的格式, 可以用下面的命令来避免下载那些多余的文件:
wget -nd -r -l1 --no-parent -A .mp3 -A .wma http://www.foo.com/mp3/
10.脚本添加用户:
cnbjnis:~ # useradd -u 3001 chenxj
cnbjnis:~ # echo password | passwd --stdin chenxj
11. solaris 提示terminal too wide.
stty columns 120
12. 有时候为了方便管理,我们常常喜欢在Linux中将之安装为服务,然后就可以使用服务来管理。
但是当我们运行安装服务的命令时候,假设服务名为myservice
chkconfig --add myservice
常常会出现
"service myservice does not support chkconfig"
我们一般在脚本开头加入下面两句就好了
vim /etc/init.d/myservice
添加下面两句到 #!/bin/bash 之后。
# chkconfig: 2345 10 90
# description: myservice ....
其中2345是默认启动级别,级别有0-6共7个级别。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
#vi /var/lib/dhclient/dhclient-eth0.leases
13. sed最常用的用法莫过于替换文件,其默认的模式是直接输出在shell中,Old 为要替换的文本,New 为将要替换成的文本。
sed 's/Old/New/' My_File.txt
如果我们想要sed直接在文件中更改,只需要在sed后面添加 -i 或 -ig即可,-g应该是指全局。
sed -i 's/Old/New' My_File.txt
在mac中需要添加 -ig才能够执行(没有尝试过)
14. 检查进程号
checkproc -v proc
15. 查找incoming目录下的2个月以前的文件,并将它们移动到/pub/pub/clearcase/multisite_bak/incoming/下:
find /shipping/ms_ship/incoming-mtime +2 -print -exec mv {} /pub/pub/clearcase/multisite_bak/incoming/ \;
16. 杀掉该用户的所有进程
kill -9 `lsof -t -u daniel`
17. 打印从包含 "BEGIN" 的行开始,并且以包含 "END" 的行结束的文本块:
sed -n -e '/BEGIN/,/END/p' /my/test/file | more
如果没发现 "BEGIN",那么将不打印数据。如果发现了 "BEGIN",但是在这之后的所有行中都没发现 "END",那么将打印所有后续行。发生这种情况是因为 sed 面向流的特性 -- 它不知道是否会出现 "END"
18. Solaris 10 开启SSH
系统版本:SunOS solaris1 5.10
内核版本:5.10 i86pc
Solaris 10在安装完成后,默认是没有开启ssh服务的,如果要开启ssh服务,就要做如下操作。
1. 修改配置文件
vi /etc/ssh/sshd_config
将PermitRootLogin no更改为PermitRootLogin yes
2. 重启ssh服务
/lib/svc/method/sshd restart
3. 查看ssh开放服务的端口,ssh默认开放端口为22端口,通过从查看端口来确定服务是否开启。
netstat -avn | grep 22
19. shell分类:
1.交互式登录shell:以一个用户的身份登陆进去,输入命令的格式的shell。
读取配置文件的顺序:
/etc/profile-->/etc/profile.d/*-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
2.非交互式登录shell:只在一个脚本的,不需要用户登录,自动运行。
读取配置文件的顺序:
/.bashrc-->/etc/bashrc-->/etc/profile.d/*
20.检查网址是否连通
ping=`ping -c 3 192.168.1.69|awk 'NR==7 {print $4}'`
ping=`ping -c 1 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'`
21.以数字形式显示文件权限:stat -c %a
页:
[1]