在Linux下用split进行文件分割:
模式一:指定分割后文件行数
对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。
命令:split -l 300 large_file.txt new_file_prefix
模式二:指定分割后文件大小
split -b 10m server.log waynelog
对二进制文件我们同样也可以按文件大小来分隔。
awk根据非空格类分隔符获取第N列
ifconfig | awk '{print $2}' | awk -F: '{print $2}'
查看cpu socket数量、核心数、线程数
[root@oel-12c ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 1 座: 2 NUMA 节点: 1 厂商 ID: GenuineIntel CPU 系列: 6 型号: 142 型号名称: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 步进: 10 CPU MHz: 1799.998 BogoMIPS: 3599.99 超管理器厂商: VMware 虚拟化类型: 完全 L1d 缓存: 32K L1i 缓存: 32K L2 缓存: 256K L3 缓存: 6144K NUMA 节点0 CPU: 0,1
非交互创建用户并设置密码
[root@specl ~]# useradd -p 'pass' jean
[root@specl ~]# echo 'jean:pass' | chpasswd (指定密码,步骤不能缺少否则shadow里面密码是明文且密码是无效的)
注:pass--密码
jean--新建的帐号
linux查看内存插槽数、实际条数及大小
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
Size: No Module Installed
linux cp命令直接覆盖不提示按Y/N的方法
# cp -rf install.log 123/
cp:是否覆盖“install.log”?
加了-f了,依然有此提示。
服务器上查找后发现在默认的系统中是加了别名如下
[root@linuxzgf ~]# alias
alias cp='cp -i'
去掉别名即可: unalias cp
一个命令杀死指定端口号进程:
kill -9 `lsof -t -i:port`
根据进程名杀:
ID=`ps axu | grep hsserver | grep -v grep | awk '{print $2}'` for id in $ID do kill -9 $id echo "killed $id" done
nohup 不生成 nohup.out的方法
nohup java -jar /xxx/xxx/xxx.jar >/dev/null 2>&1 &
关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉大海
>/dev/null 表示将标准输出信息重定向到"黑洞"
2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是"黑洞",再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)
vim 多行删除:
首先在命令模式下,输入“:set nu”显示行号; 2.通过行号确定你要删除的行; 3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧
如果无意中删除错了,可以使用‘u’键恢复(命令模式下)。
修改主机名,主机名不能含有下划线:
vim /etc/sysconfig/network
HOSTNAME=my-hostname
:wq
init 6
使用grep -v时候,想去除多个pattern
grep test somefile | grep -vE '(error|critical|warning)'
查看进行完整启动路径
[root@localhost src]# ll /proc/21375 | grep exe
lrwxrwxrwx 1 uft_trade_B dba 0 7Ղ 18 13:42 exe -> /home/uft_trade_B/uft2/bin/hsserver
查看Linux进程CPU过高具体的线程堆栈(不中断程序)
top -H -p 24714
pstack 24714
xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次:
ps aux | grep "hsserver" | grep -v "grep" | xargs -I {} pstree -p {} >> monitor.log
当某个命令的输出要做个后面一个命令的输入时,xargs -I {}特别有用。没有它,需要一大堆的shell命令拼凑。
查看目录下所有文件的大小,不仅仅只是目录
[root@rhel65 projects]# du . -a
36 ./HelloLinux/obj/x64/Debug/main.o
40 ./HelloLinux/obj/x64/Debug
44 ./HelloLinux/obj/x64
48 ./HelloLinux/obj
4 ./HelloLinux/main.cpp
32 ./HelloLinux/bin/x64/Debug/HelloLinux.out
36 ./HelloLinux/bin/x64/Debug
40 ./HelloLinux/bin/x64
44 ./HelloLinux/bin
100 ./HelloLinux
104 .
如果仅仅查看zip文件包含哪些文件
unzip -t a.zip
查看进程启动路径,有些时候,我们想知道进程启动的完整路径,此时top因为排序不一定方便看到。可查看/proc/PID,如下:
[root@iZ23nn1p4mjZ sbin]# cd /proc/9122/
[root@iZ23nn1p4mjZ 9122]# ll
total 0
dr-xr-xr-x 2 root root 0 Feb 28 10:25 attr
-rw-r--r-- 1 root root 0 Feb 28 10:25 autogroup
-r-------- 1 root root 0 Feb 28 10:25 auxv
-r--r--r-- 1 root root 0 Feb 28 10:25 cgroup
--w------- 1 root root 0 Feb 28 10:25 clear_refs
-r--r--r-- 1 root root 0 Feb 28 08:49 cmdline
-rw-r--r-- 1 root root 0 Feb 28 10:25 comm
-rw-r--r-- 1 root root 0 Feb 28 10:25 coredump_filter
-r--r--r-- 1 root root 0 Feb 28 10:25 cpuset
lrwxrwxrwx 1 root root 0 Feb 28 10:25 cwd -> /usr/local/src
-r-------- 1 root root 0 Feb 28 10:25 environ
lrwxrwxrwx 1 root root 0 Feb 28 08:49 exe -> /usr/sbin/nginx
查找指定目录下包含指定字符串的所有文件
grep -rl 'abc' /
grep -rn "hello,world!" *
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
top查看命令的完整启动路径
top
按c
top以MB为单位显示内存信息
top -M
查看内存top io趋势
pidstat -d # 这不一定是最直观的,重点关注下列指标:
- await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
- svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
iotop # 这应该是最直观的, 当iowait很高的时候,这必然是最需要的
查看进程top cpu趋势
pidstat -u 3 100 -p PID
查看进程内存趋势
pidstat -r
就多个应用共享一个服务器的情况来说,建个crontab监控关键应用的资源消耗趋势是绝对必要的,比如我们就很多次碰到因为配置被修改导致某应用的cpu从6%很稳的变成了cpu 60%。
查看某个进程的内存/交换区峰值
cat /proc/PID/status,比如
[root@iZ23nn1p4mjZ logs]# cat /proc/9758/status | grep Vm
VmPeak: 5104816 kB
VmSize: 5104816 kB
VmLck: 0 kB
VmHWM: 3174476 kB
VmRSS: 3174476 kB
VmData: 5022756 kB
VmStk: 104 kB
VmExe: 22772 kB
VmLib: 7996 kB
VmPTE: 7268 kB
VmSwap: 0 kB
查看进程可运行在cpu列表:
[root@iZ23nn1p4mjZ logs]# cat /proc/9758/status | grep Cpus
Cpus_allowed: f
Cpus_allowed_list: 0-3
显示线程
ps -eLf | grep PID
ping显示时间戳
windows:
@echo off
:START
echo ==============================================%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% >> pingwithtime.out
ping www.baidu.com -n 100 >>pingwithtime.out
goto START
linux: ping localhost | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()) } '
删除一天前的文件
find ./ -mtime +1 -exec rm -rf {} \;
linux tcp抓包
tcpdump, 分析使用wireshark。
查看进程启动时间
# ps -A -opid,stime,etime,args PID STIME ELAPSED COMMAND 1 09:21 08:56:14 init [3] 2 09:21 08:56:14 [migration/0] 3 09:21 08:56:14 [ksoftirqd/0] 4 09:21 08:56:14 [watchdog/0] 5 09:21 08:56:14 [events/0] 6 09:21 08:56:14 [khelper] 7 09:21 08:56:14 [kthread] 10 09:21 08:56:14 [kblockd/0] 11 09:21 08:56:14 [kacpid] 47 09:21 08:56:14 [cqueue/0]
vi
删除当前字符到行尾的所有字符
dw 删除光标之后的单词剩余部分。 d$ 删除光标之后的该行剩余部分。有些时候一行特别长,想删除后面的部分比如注释的时候就很有用了
删除每行第一个字符 :%s/^.//g
多行删除 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd
查看进程的内存块组成
pmap -x PID