YiluPHP
这家伙很懒,什么都没有留下...

经验 linux命令

浏览数 201825 最后修改时间
Linux下批量杀掉筛选进程ggg
在做项目的时候,由于情况要求,需要把服务器上符合某一条件的进程全部kill掉,但是又不能使用killAll直接杀掉某一进程名称包含的所有运行中的进程(即我们可能只需要杀掉某一类含有特定参数命令的进程)。 
具体命令参考: 
ps -ef | grep test | grep -v grep | awk '{print $2}' | xargs kill -9 
其中: 
|管道符,用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。 
ps命令用来列出系统中当前运行的进程, ps -ef显示所有进程信息,联通命令行。 
grep命令用于过滤/搜索特定字符,grep test在这里为搜索过滤所有含有‘test’名称的进程 
grep -v grep-v 显示不包含匹配文本的所有行,在这里为筛选出所有不包含grep名称的进程,对上一步的进程再做一次筛选(因为ps -ef列出了所有的命令,包括命令行) 
awk在文件或字符串中基于指定规则浏览和抽取信息;把文件逐行读入,以空格为默认分隔符将每行切片,然后再进行后序处理。这里利用awk '{print $2}'将上一步中过滤得到的进程进行打印,$2表示打印第二个域(PID,进程号) $0表示所有域,$1表示第一个域,$n表示第n个域。 
xargs命令是给命令传递参数的过滤器,善于把标准数据数据转换成命令行参数。在这里则是将获取前一个命令的标准输出然后转换成命令行参数传递给后面的kill命令。 
kill -9强制关闭进程。 
此外,也有使用cut命令进行处理的,参考如下: 
ps -ef | grep test | grep -v grep | cut -c 9-15 | xargs kill -9 
cut -c 9-15仅显示第9-15个字符(即PID,进程号)


Linux里如何查找文件内容,根据文件内容查找文件的方法:

Linux查找文件内容的常用命令方法。

从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
grep "thermcontact" */*.in

从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名

查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名

查找匹配的行数:
$ grep -c "被查找的字符串" 文件名

从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名

从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
find . -name "*.in" | xargs grep "thermcontact"

查找目录下的所有文件中是否含有某个字符串
find .|xargs grep -ri "IBM"
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l

Linux下的tar压缩解压缩命令详解

tar

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 

tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压


vim 编辑器中的光标跳转定位

G 移至最后一行行首
nG 移至第n行行首
n+ 下移n行行首
n- 上移n行行首
n$ 下移n行(1表示本行)行尾
0 当前行行首
$ 当前行行尾
^ 当前行首字母
h,j,k,l 左移下移上移右移
H 前屏幕首行行首
M 屏幕显示文件间行行首
L 前屏幕底行行首

开机启动php或其它软件

编辑 /etc/rc.local 文件

sudo vim /etc/rc.local

在此文件中加入启动的命令即可,手工启动使用哪些命令就加哪些,一行一条命令。如以下为启动PHP的命令:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

cd /var/run
mkdir php
chmod 777  /var/run/php/
/usr/local/php/sbin/php-fpm
chmod 777 /var/run/php/php7.0-fpm.sock
chmod 777 /var/run/php/php7.0-fpm2.sock
redis-server &

#exit 0


在日志的倒数10000行内搜索带有关键字discoverUser的行,并且过滤掉带有关键字{的行,然后把搜索结果输出到当前目录的a.log文件中
tail -10000 /data/web/www.weinidai.com/storage/logs/lumen-2018-11-10.log | grep discoverUser | grep -v "{" > a.log

监听输出日志中带有关键字discoverUser的行,并且过滤掉带有关键字{的行
tail -f /data/web/www.weinidai.com/storage/logs/lumen-2018-11-10.log | grep discoverUser | grep -v "{"

只打印输出日志每行的最后一个执行时间(输出内容是经过过滤的:带有关键字discoverUser的行,并且过滤掉带有关键字{的行)
tail -1000 /logs/www.weinidai.com.access.log | grep discoverUser | awk '{print $NF}' |awk '{FS="\""}{print $4}'

搜索指定REDIS前缀的键并删除它们,如果是连本机则不需要-h参数,如果没有密码则不需要-a参数
redis-cli -a 'yourPassword' -h 192.168.1.88 keys "REDIS_USER_*" | xargs redis-cli -a 'yourPassword' -h 192.168.1.88 del

#下面的命令指定数据库的序号为10

redis-cli -a 'yourPassword' -h 192.168.1.88 -n 10 keys "REDIS_USER_*" | xargs redis-cli -a 'yourPassword' -h 192.168.1.88 -n 10 del


#删除有序集合中包含指定字符串的值

#往有序集合中添加数据

zadd test 1 aaa 2 bbb 3 ccc

zadd test 4 '{"d":"dd"}' 5 '{"e":"ee"}'

#查询语句

redis-cli -a 'yourPassword' -h 127.0.0.1 -n 0 zrange redis_asyn_exec_after 0 -1|grep push_new_followed_event|sed 's/"/\\"/g'

#删除命令

redis-cli -a 'yourPassword' -h 127.0.0.1 -n 0 zrange redis_asyn_exec_after 0 -1|grep push_new_followed_event|sed 's/"/\\"/g'|xargs redis-cli -a 'yourPassword' -h 127.0.0.1 -n 0 zrem redis_asyn_exec_after

redis-cli -a 'yourPassword' -h 127.0.0.1 -n 0 zrange test 0 -1|grep d|sed 's/"/\\"/g'|xargs redis-cli -a 'yourPassword' -h 127.0.0.1 -n 0 zrem test


我来说说