用shell脚本监控进程是否存在,不存在则启动的实例

用shell脚本监控进程是否存在,不存在则启动的实例:

vim socks-forward.sh
#!/bin/sh
ps -fe|grep 'process name' |grep -v grep
if [ $? -ne 0 ]
then
echo "start....."
#do same thing
echo "done....."
else
echo "runing....."
fi

设置定时任务:

*/10 * * * * sh /disk/server/socks-forward.sh

10条命令分析Linux性能问题

当你登录到一台存在性能问题的Linux服务器上时,在头一分钟,你会检查什么?

我们看看Netflix的性能工程师是怎么做的。

Netflix大量使用EC2 Linux服务器,很多时候是用一些较为高层的工具做云或实例层次的分析。不过有时仍然需要登录到某个实例上,运行一些标准的Linux性能工具。

在最开始的一分钟内,可以先利用手头的标准Linux工具大致了解性能状况。借助如下10条命令(有些命令需要安装sysstat包),了解系统资源使用状况和正在运行的进程。先检查错误(errors)和饱和度(saturation),再检查资源利用率(resource

阅读全文

linux根据字符串长度排序

sort 命令可以按照字母或者数字顺序排列字符串,不过如果我们想根据字符串的长度来排序呢?

配合一点点 awk 魔法,就可以达成愿望。建立一个 lsort 文件,内容如下:

#! /bin/sh awk ‘BEGIN { FS=RS } { print length, $0}’ $* | sort +0n -1 | sed ‘s/^[0-9][0-9]* //’

首先,awk 把标准输入中每行的前面,都加上这行的长度,然后传给 sort 对长度数字进行排序,最后用 sed 把长度数字删掉。

保存之后,加上可执行标记,就可以拷贝到

阅读全文

Linux比较文本文件的交集、差集与求差

介绍两个常用命令:

1. comm命令

comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集、求差、以及差集操作。有三列内容:分别表示A-B,B-A 和 A交B。

相关集合论解释: 交集:打印出两个文件所共有的行。 求差:打印出指定文件所包含的且不相同的行。<br

阅读全文

查看Linux某端口被哪个进程占用

例如:

nginx: [emerg] bind() to 0.0.0.0:8004 failed (98: Address already in use) 1.查看占用8004端口的进程ID:
$ netstat -anp |grep 8004
tcp  0  0 0.0.0.0:8004  0.0.0.0:*  LISTEN  2768/nginx.conf
2.查看进程信息:
$ ps -u -p 2768
USER  PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND

work 2768  0.0  0.5 385344 353712 ?     Ss   Mar28   0:00 nginx: master process /home/work/odp/nginx/sbin/nginx -p/home/work/odp/nginx -c /home/

3.根据实际情况修改端口或停止原进程

避免误删,自己搭建linux回收站

相信不少人都遇到过误删了在Linux虚拟机中写的程序文件,使忙活了半天的工作功亏一篑。其实可以通过alias rm为mv动作来解决误删问题。具体如下。

1、编写回收站脚本 vim /bin/rm.sh #!/bin/sh dirpath=/data/Recycle # 选择回收站所在的分区目录 now=`date +%Y%m%d_%H_%M_%S_` filename=${now}$1 # 给已经删除的文件加一个时间前缀来标识删除时的精准时间 if [ ! -d ${dirpath} ];then /bin/mkdir -p ${dirpath} fi /bin/mv $1 ${dirpath}/${filename}

2、设置alias rm
chmod 755 /bin/rm.sh
echo “alias rm=’/bin/rm.sh'” >> /etc/bashrc

3、删除文件测试 rm /root/text.txt 此时,text.txt文件就会被mv 到 回收站目录

阅读全文

Linux History记录添加时间戳

熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如 :
[root@YAN ~]# history | more
6 ./test.sh
7 vim test.sh
8 ./test.sh
但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。

通过设置环境变量 export HISTTIMEFORMAT=”`whoami` %F %T ” 给history加上时间戳

[root@YAN ~]# export HISTTIMEFORMAT=”`whoami` %F %T ” [root@YAN ~]# history

阅读全文

samba的安装与使用

samba主要用于linux向window共享文件,本文讲解如何在linux中安装、配置并在windows挂载。

1.centos安装samba yum install samba samba-client samba-swat rpm -qa |grep samba        #查看安装状况 /etc/init.d/smb restart     #启动Samba服务器 service smb status         #查看samba的服务启动情况 chkconfig –level 35

阅读全文

linux lsof命令详解

简介

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

输出信息含义

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

直接输入lsof部分输出为:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,1 4096 2 / init 1 root rtd DIR 8,1 4096 2 / init 1 root txt REG 8,1 150584 654127 /sbin/init udevd 415 root 0u CHR

阅读全文

df磁盘满了但是du未满时的处理

现象:
df看硬盘满了,但是du实际文件没占满。
$ df -h
/dev/sda6 1.3T 1.3T 0 100% /home
$ du -sh /home/
371G /home/

原因:
有些文件被删了,但是文件句柄还没有释放(进程占用), 所以导致文件的空间没有清理出来,需要把进程杀了。
以下命令会列出这些文件和进程:
lsof |grep delete

Mac添加Bash Shell Alias

Alias是linux中常用的别名命令,这么好的东东在mac中自然不会舍去。当有一些比较复杂的命令需要经常执行的时候,alias对效率的提升立竿见影。

示例:

ubuntu 里面有命令“ll”,直接代替了“ls -l”命令,使用起来非常方便,但是Mac Book Pro系统默认没有“ll”命令,于是需要自己用别名(alias)来重设。

alias 别名步骤如下:

1) sudo vim  /etc/profile(打开/etc/profile文件,并设为可写权限,并用管理员sudo权限修改)

2)alias ll=’ls -l’ (重置别名)

阅读全文

linux下将远程磁盘mount到本地

实现办法: 使用nfs服务,在客户端mount服务器的文件夹。 操作步骤: 1.在服务器端启动nfs和portmap服务。 service nfs start service portmap start 运行ntsysv,把nfs和portmap加入到启动服务中去 2.在服务器编辑配置文件/etc/exports 如果你需要共享/data目录给10.10.10.10这个ip,可以加上如下的配置语句: /data   10.10.10.10(rw,no_root_squash) 3.重启服务器端的nfs服务 service nfs restart 4.在客户端启动portmap服务 service portmap start 5.在客户端mount远程文件夹 mkdir /data mount -t nfs 10.10.10.1:/data /data 或者 vi /etc/fstab 10.10.10.1:/data/data     /data/data nfs     defaults        0 0

linux的expect用法

1. [#!/usr/bin/expect]

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。

注意:这一行需要在脚本的第一行。

2. [set timeout 30]

基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒   。timeout -1 为永不超时

阅读全文

linux通过ssh-keygen实现无密码scp文件和目录

1
在编写Shell脚本远程拷贝的时候,脚本在执行过程中因为要检验密码会被打断,这时可以通过ssh-keygen实现两台linux主机之间的指定用户免密码登陆。

整个过程如下:

本地服务器:A
远程服务器:B

1.在 A 上运行 ssh-keygen -t rsa 在/home/openpf/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,然后在/home/openpf/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到服务器B,如图所示:

2. 在 B 上也同样运行 ssh-keygen -t rsa 3. 在 B 的/home/openpf/.ssh下创建authorized_keys文件,把A

阅读全文

linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法

sed命令行格式为:
sed [-nefri] ‘command’ 输入文本

常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将

阅读全文

linux wget 命令详解

wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点: (1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了; (2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件;<br

阅读全文