linux命令记录(持续更新)

Scroll Down

1.文件

du命令

//查看文件夹大小
du -h
//列出当前目录下面所有的一级目录文件大小
du -h --max-depth=1
//列出当前目录下所有一级目录的一级目录文件大小
du -h --max-depth=1 *
//查看当前目录下各个文件及目录占用空间大小
du -sh *
//当前目录的大小(M)
du -sm
//统计当前目录下各文件及目录的大小(M),并按大小排序
du -sm * | sort -n

df命令

//查看文件系统磁盘空间大小
df -h

ls命令

//查看当前目录下的文件、目录数
ls | wc -l 

ln命令

// 生成软连接
ln -s /dd/ /opt/dddir
// 生成硬链接
ln /dd/ /opt/dddir

软连接和硬链接,源和目的文件都只占一份空间,修改任何一个文件,另一个都会跟着变化。区别在于,软连接删除源文件,目的文件失效。硬连接删除源文件,目的文件仍有效。软连接支持文件、文件夹,硬连接只支持文件。软连接源路径必须写绝对路径,硬连接可以写相对路径。

nohup

//只输出错误信息到error.log文件,其余信息丢进/dev/null
nohup ./program >/dev/null 2>error.log &
//不记录日志,将所有信息丢进/dev/null
nohup ./program >/dev/null 2>&1 &

/dev/null属于字符特殊文件,它属于空设备,是一个特殊的设备文件,它会丢弃一切写入其中的数据,写入它的内容都会永远丢失,而且没有任何可以读取的内容。它就像一个黑洞,我们一般会把/dev/null当成一个垃圾站,不要的东西丢进去。比如来清除文件中的内容。

Linux的重定向
0:表示标准输入,从键盘输入。
1:标准输出,在一般使用时,默认的是标准输出。
2:表示错误信息输出。

输出重定向
image.png

上述命令,./program >/dev/null,将程序的标准输出,丢进了/dev/null,2>&1将错误输出重定向到了标准输出,所以错误输出也被丢进了/dev/null,最终无任何输出。

tar命令
打gz包

tar -zcvf [压缩包名].tar.gz [原文件/目录名]

解压tar包

tar -xvf [压缩包名].tar.gz

zip命令
压缩指定目录下的文件和文件夹

zip -q -r [压缩包名].zip [原目录]

从压缩文件 cp.zip 中删除文件 a.c

zip -dv cp.zip a.c
  • -v:显示指令执行过程或显示版本信息
  • -r:递归处理
  • -q:不显示执行过程
  • -d:从压缩文件内删除指定的文件

2.系统

查看系统发行版本

cat /etc/redhat-release

查看系统内核信息

uname -a

查看系统版本信息

cat /proc/version

查看CPU信息

cat /proc/cpuinfo

查看物理CPU的个数

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l

查看逻辑CPU的个数

cat /proc/cpuinfo |grep "processor"|wc –l

查看CPU是几核

cat /proc/cpuinfo |grep "cores"|uniq

查看CPU的主频

cat /proc/cpuinfo |grep MHz|uniq 

tcpkill清除tcp连接
需要安装dsniff,可以wget下载

wget  http://pkgs.repoforge.org/dsniff/dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm

使用

tcpkill -i ens160 host 192.168.xxx.xxx
tcpkill -i ens160 host 192.168.xxx.xxx and port 3306

添加端口

# --permanet为永久生效,去掉该参数临时生效,系统重启后失效
firewall-cmd --add-port=9100/tcp --permanent

移除端口

firewall-cmd --remove-port=9100/tcp --permanent

防火墙重启,加–permanent参数时需要重启

firewall-cmd --reload

查看端口是否开启

firewall-cmd --query-port=9100/tcp

对指定ip开放端口

firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.1 port protocol=tcp port=8080 access' --permanent

删除对指定ip开放端口的规则

firewall-cmd --remove-rich-rule='rule family=ipv4 source address=192.168.1.1 port protocol=tcp port=8080 access' --permanent

查看现有的规则

firewall-cmd --list-all

查看rich rule说明

man firewalld.richlanguage

定时开启关闭网卡
切记一定要写成脚本执行,否则执行完关闭网卡命令,网卡关闭后,后面命令就不会执行

#! /bin/bash

ifdown ens160

# 15min
sleep 900

# 11min
#sleep 660

# 4min
#sleep 240

# 2min
#sleep 120

ifup ens160

查看ssh登陆失败记录

lastb

查看重启记录

last | grep reboot

查看开机信息

dmesg

修改时区

timedatectl set-timezone Asia/Shanghai

用户

创建用户

useradd dd
#指定用户home目录
useradd dd -d /opt/dd
#指定用户shell
useradd dd -s /bin/bash
#禁止用户登录系统、ftp、samba等用户使用
useradd dd -s /sbin/nologin

创建用户时出现Creating mailbox file: File exists问题。
解决方案:删除/var/spool/mail/和/home下的之前存在的用户文件夹,再删除用户。

修改用户

usermod dd -d /opt/dd2

删除用户

userdel dd

centos6添加端口

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables save
service iptables restart

3.JVM分析

jstack

#查看java进程各线程的调用栈
jstack -l [pid]
#写入到文件
jstack -l 1234 >jstack_dump.log

jmap

查看java堆摘要信息,包括使用的gc算法,各内存区域使用信息

jmsp -heap [pid]

查看所有对象

jmap -histo [pid] |more

查看活跃对象

jmap -histo:live [pid] |more
  • B byte
  • C char
  • D double
  • F float
  • I int
  • J long
  • Z boolean
  • [ 数组,如[I表示int[]

将内存使用情况dump到文件(耗时较久)

jmap -dump:format=b,file=[文件名] [pid]

dump文件可以用jhat解析,也可以使用eclipse的Memory Analyzer(MAT)解析。
Memory Analyzer下载链接:
https://ftp.jaist.ac.jp/pub/eclipse/mat/1.11.0/rcp/MemoryAnalyzer-1.11.0.20201202-win32.win32.x86_64.zip

jhat

通过jhat对dump文件进行分析,通过指定的端口,web访问查看分析结果(耗时较久)

jhat ‐port [端口号] [dump文件]

#如果解析过程中出现oom,需要加大内存
jhat -J-Xmx1024M [dump文件]
start HTTP server on port [端口号]

更换yum源

阿里云repo:http://mirrors.aliyun.com/repo/Centos-7.repo
网易repo:http://mirrors.163.com/.help/CentOS7-Base-163.repo

1.下载阿里云repo文件,放到/etc/yum.repos.d下

cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/repo/Centos-7.repo

2.清理yum缓存

yum clean all

3.构建缓存

yum makecache

4.服务相关

重启php服务

service php-fpm restart

5.软件使用

vim

取消搜索高亮

在非编辑模式输入以下内容

:noh