linux常用操作

主要记录一些日常用到的shell命令操作。

  1. jenkins执行remote主机上面的sh脚本时, 无法拿到远程主机的环境变量。

解决方法:在文件开头的注释加上 –login

#!/bin/bash --login

参考

  1. sed 替换文件中的内容

sed -i ‘s/java -jar/$JAVA_HOME/bin/java -jar/g’ find /opt/xxxxx/ -name "xxx.sh"

  1. jenkins shell重启本地tomcat, 无效, 原因,jenkins 会杀死衍生进程

参考

1
2
3
sleep 5
BUILD_ID=dontKillMe
bash /opt/xxxx/business_restart.sh
  1. CentOS/RHEL 修改主机名
  • 查看主机名

hostnamectl status

  • 修改

hostnamectl –static set-hostname 名字

  1. 创建组, 用户权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
groupadd dev
useradd -g dev cpf
passwd cpf
用户列表文件:/etc/passwd

用户组列表文件:/etc/group

查看系统中有哪些用户:cut -d : -f 1 /etc/passwd

查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

查看用户操作:w命令(需要root权限)

查看某一用户:w 用户名

查看登录用户:who

查看用户登录历史记录:last
  1. 修改目录所属用户和组

chown -R cpf.dev tomcat2/

  1. 磁盘
1
2
3
4
5
6
查看 fdisk –l
fdisk /dev/vdb
输入n 进行分区, 分区类型选 p, 分区个数默认, 柱面默认, 输入w 写入分区表
格式化分区,如果创建的是主分区;
mkfs -t ext3 /dev/vdb1

  1. find中 -mtime 中的参数n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
find . –mtime n中的n指的是24*n, +n、-n、n分别表示:
+n: 大于n
-n: 小于n
n: 等于n

但是man find里这样的解释还是比较令人费解的,不如直接看find . -mtime 中的用法

find . –mtime n: File waslast modified n*24 hours ago.

最后一次修改发生在距离当前时间n*24小时至(n+1)*24 小时

find . –mtime +n:

最后一次修改发生在n+1天以前,距离当前时间为(n+1)*24小时或者更早

find . –mtime –n:

最后一次修改发生在n天以内,距离当前时间为n*24小时以内
  1. awk
1
2
3
4
5
6
7
awk默认分割符是空格或制表符。
cut命令不能在分割符是空格的字符串中截取列,只能是制表符或具体的分割符。
cut [选项] 文件
awk '条件1{动作1} 条件2{动作2} ...' 文件名

awk '{print $1}' 文件名
awk '{if ( $1 > 10 ){ print $1} }'
  1. 网络监控工具

iftop, iptraf-ng

  1. root 删除文件 Operation not permitted
1
2
3
4
5
6
lsattr 1.txt
——i—— 1.txt
在lsattr命令下,这个1.txt文件带有一个"i"的属性,所以才不可以删除
chattr -i 1.txt

chattr +i filename 加上保护
  1. 获取目录, 文件名

dirname, basename

  1. redis批量更新

for i in $(cat news1.txt) ; do echo ‘set’ $i $((RANDOM % (200 - 50) + 50)); done | redis-cli -c -p 6300

  1. nginx统计
1
2
3
4
5
nginx按分钟统计访问频率高的
awk '{print $3}' access.log | cut -c 14-18 | uniq -c | sort -rn | head -n 100

统计耗时的请求
tail -200000 access.log | awk '{print $3, $6 ,$10}' | sort -k3 -rn | head -100
  1. 切割大文件
1
2
3
4
5
6
7

$ head -3000000 4.txt > 4.1.txt

$ tail -n +3000001 4.txt > 4.2.txt

split -l 2600000 -d imei-part-3.txt imei-part-3_

  1. 循环请求url

for i in cat udid.txt ; do curl -0 $i; echo ‘’ ; done