1:统计出现在次数
2:awk中的if
3:得到目录下文件大小
4:查看第n行以后的内容
5:保持程序关机后自动运行 crontab 必须先cd到目录,在sh
如果手动可运行crontab不能运行则为环境变量有关
转自:
不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:
1)脚本中涉及文件路径时写全局路径;
2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
3. 其他应该注意的问题
1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
2)每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
3)当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
4)千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
5)在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’`。
6:shell中的比较
大于 -gt (greater than)
小于 -lt (less than)
大于或等于 -ge (greater than or equal)
小于或等于 -le (less than or equal)
7:查看设备的外网ip
8:查看操作日志
9:windows下写shell,不能进行解决
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。
2)也可在Linux中转换:
首先要确保文件有可执行权限
#sh>chmod a+x filename
然后修改文件格式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)
最后再执行文件
#sh>./filename
10:查看日志(过滤)
11:查看设备到设备的链路情况(出现***为链路不好,内网设备为***)
12:run.sh(如果程序在运行就打出Pid ,)
cd /Application/billing/normandy
if ps U bill -Ho cmd | grep normandy.jar | grep -v grep > /dev/null
then
pid1=`ps U bill -Ho pid,cmd | grep normandy.jar | grep -v grep | head -1 |awk '{print $1}'`
echo "normandy.jar is running! main process id = $pid1"
else
if $JAVA_HOME/bin/java -jar normandy.jar ; then
echo normandy.jar complete `date +'%Y-%m-%d %H:%M'`
else
echo normandy.jar failed `date +'%Y-%m-%d %H:%M'`
fi
fi
13:批量更改文件用户
14:复制文件目录结构(包含子目录)
mkdir -p ./transfers/aaa; 当前目录创建目录结构包含子目录
15:判断文件是否已经更新
16:后台运行
17:移动文件时因为文件太多出错解决
18:关闭iptables
19:同步文件脚本(同步完成后会删除文件)
ls /proclog/transfers/FCBill_1/ >/data/list
for i in `cat /data/list`
do
rsync -av /proclog/transfers/FCBill_1/$i 目录ip::idc
rm -rf /proclog/transfers/FCBill_1/$i
done
scp:
(2)从远程将文件拷回本地:scp 用户名@计算机IP或者计算机名称:文件名 本地路径
(3)将本地目录拷贝到远程:scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径
(4)从远程将目录拷回本地:scp -r 用户名@计算机IP或者计算机名称:目录名 本地路径
20:ftp(批量)
输入用户名密码后
mput *.tgz
2: ftp 223.202.44.21
输入用户名密码后
prompt
mput *
21:取到目录 下的前n个文件
22:查看历史记录
history命令可以查看命令的执行历史。
23:查看域名所对ip
> www.google.com
24:查看用户下的指定程序的pid
查看程序占用的cpu
参数的含义:
pid - 进程ID
args - 该进程执行时传入的命令行参数
psr - 分配给进程的CPU
25:echo输出不换行(下一个输出在一行)
26:修改root密码
或者是 sudo su - 就可以变成管理者
27:修改登入级别
28:修改主机名
NETWORKING=yes
HOSTNAME=主机名
29:批量建目录
查看目录结构
30:snmpwalk 得到64位数据(与oid有关:1.3.6.1.2.1.2.2.1.16)
31:查找 命令 安装 目录
32:关闭SELinux(是美国国家安全局(NSA)对于强制访问控制的实现)
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
33:关闭iptable
chkconfig iptables off 关闭
chkconfig --list iptables 列出所有规则
34:查看系统信息
uname -a
35:负载
w
uptime
36:查看ssh连接
37:T人
who am i 查看哪个是自己的
pkill -kill -t pts/1 把pts/1提了 -9强制T
38:多条命令
mkdir /root/aaaa & mkdir aaa 第一个失败,第二个也会执行
39:批量创建文件及目录
mkdir 456{1,2,3,4,5} 会在目录中生成(4561,4562,4563,4564,4565)五个文件夹
脚本
(user是文件夹的前缀,10000是要创建文件夹的书目))
var1=1
while test $var1 -1e $2
do
mkdir $1$var1
var1=expr $var1 + 1
done
40:自启动
# chkconfig --level 35 keepalived on
# chkconfig --list keepalived 查看
详解参数
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
41:iptables 加入80访问
42:监控脚本,循环命令
watch -n 1 命令 #刷新时间,默认2s
43:连接数
netstat -nat||grep ESTABLISHED #查看正在传输的
netstat -na||grep ESTABLISHED #所有信息
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数
44:设置系统时间
持续更新中。。。