Linux常用命令备忘

可参考man7

cd - #查看上一次所在的目录

cat /etc/hosts  #文档查看

ls  #查看当前目录下所有文件

pwd #查看当前目录的绝对路径

ll #查看目录下文件的详细信息,包括权限属组等信息

# 创建一个软连接到指定目录,相当于快捷方式
ln -s ~/test.sh /etc/test/

find / -name web.xml #查看名字为web.xml的文件,需要等待片刻

find .|xargs grep -rl "google.com" #搜索当前目录文件内容并返回文件名

find .|xargs grep -r "google.com"  #搜索当前目录文件内容并返回文件名,并展示命中行

find .|xargs grep -rn "google.com" #搜索当前目录文件内容并返回文件名,并展示行号

find .|xargs grep -rn1 "google.com" #搜索当前目录文件内容并返回文件名,并展示上下文内容

# 查看文件的最后一百行 -f 属性循环读取
tail -n 100 cata.log 
# 查看文件中过滤内容(忽略大小写)的前后五行
tail -n 40 -f cata.log|grep -i 'error' -5

# 创建文件夹
mkdir -p 
# 创建多个子目录
mkdir -p test/{sql,scripts}

cat [目录1]  >> [目录2] #把目录1的文件内容输入到目录2中 

chmod a+x filename #让执行文件能被./filename调用,变为可执行

# 改变指定文件的权限,1(执行) 2(写) 4(读)
chmod 777 <filename>

#将当前目录下的所有文件移到上层目录,以便删除上级目录
mv * ../

# 显示当前ip
ip addr

#HOST修改需重启
vi /etc/hosts 

#DNS修改即时生效
vi /etc/resolv.conf 

#IP修改需重启
vi /etc/sysconfig/network-scripts/ifcfg-eth0 

cat /etc/os-release #查看当前系统版本信息

# 把dir1完整复制到dir2
cp -r dir1 dir2

# 把dir1下的所有子文件复制到dir2,不包括目录自身
cp -r dir1/. dir2

unset #删除对应的环境变量

#通过域名查找ip和dns,或者通过ip查找域名
nslookup [ip/域名] 

# brew软件安装路径查看
brew list go

wget 域名  #通过指定域名下载文件到当前目录

scp -r ~/data root@127.0.0.1:~/data #指定服务上传  

scp -r root@127.0.0.1:~/data ~/data #指定服务下载

ctrl+z #进程暂停

ctrl+c #进程终止

fg [JobID] #将后台进程移到前台处理,不设置id,将显示最后一个暂停的进程

bg [JobID] #将进程放到后台处理

jobs [选项] [JobID] #该命令生效之前需执行find / -name password &
    #-l显示进程
    #-p仅显示任务对应的进程号
    #-r仅输出运行状态的任务 
    #-s仅输出停止状态的任务
ps -ef  #查询所有正在运行的service
    ps -ef | grep mysql #查询mysql相关的进程
service --status-all  #查询所有已安装的service

# ping指定ip+端口
telnet 198.0.0.2 10086

# mac ping指定ip + 端口
nc -vz -w 2 172.105.197.158 10086

# 关机
halt
power off
shutdown -h now

# 10分钟后关机
shutdown -h 10

# 取消关机进程
shutdown -c

# 重启
reboot
    #-d重新开机时不把数据写入记录文件/var/tmp/wtmp。具有-n效果
    #-f强制重新开机,不调用shutdown指令
    #-i重新开机之前,关闭所有网络界面
    #-n重新开机之前不检查是否有程序未结束
    #-w仅做测试,不真正重启,只会在/var/log/wtmp写入记录
    
# 定时重启
# 10分钟后重启
shutdown -r 10

# 指定时间重启
shutdown -r 17:00

#取消重启
shutdown -c
    
su - [用户名] #完全切换到指定用户,需要指定用户的密码

sudo  -i #暂时切换到root账户,logout命令可退出root,需要sudoers权限

sudo passwd root #设置root密码 

sudo useradd -m hadoop -s /bin/bash #添加用户 新建用户

sudo adduser hadoop sudo #给用户追加管理员权限

# 删掉用户的管理员权限
sudo deluser USERNAME sudo

# 创建用户,并把它分配给指定组
sudo usermod -a -G <group> <user>

# 改变已有用户组
sudo usermod -G<group> <user>

# 给用户创建home
sudo mkhomedir_helper ming

# 查看当前用户组
groups ming

# 删除指定用户和他的用户组
userdel -r <user>

# 实时查看资源占用情况, cpu占用
top 

while true;do ps -u your-user-name -L | wc -l;sleep 1;done #查看当前用户开启的线程数

ulimit -u #查看当前用户所能开启的线程数

echo $JAVA_HOME #查询环境变量

which java #获取java执行路径

ls -lrt /usr/bin/java #查找安装路径

sudo tar -zxf 压缩包目录 -C 目标解压目录 #文件解压

#更改文件及其所有子文件的所有者权限
sudo chown -R [userName] [filePath] 

# 改变文件组 myfile 的组改为 root
chgrp root myfile

# 解压zip文件
unzip 

# 解压jar
jar -xvf hello.jar

# 压缩jar
jar -cvf0m hello.jar ./META-INF/MANIFEST.MF .

vi /etc/apt/sources.list #编辑环境变量

dpkg -i *.deb #ubuntu体系安装软件包命令

apt-get upgrade [软件名] #ubuntu更新

# 删除软件并删除对应配置
apt-get remove --purge [软件名]

# 自动移除无用依赖
apt-get autoremove 

# 列出所有安装包
apt list --installed

# 搜索指定包
apt-cache search zfs

jps #查看当前所有的java进程,并显示进程id


# 根据jps查出的对应id,跳转到指定目录,ll找到log日志文件
cd /proc/[jps id]/fd

# 生成SSH key
ssh-keygen 

# 设置免密登陆,前提是已执行ssh-keygen
ssh-copy-id root@192.168.100.100

#在目录下查找循环引用
find -L ./ -mindepth 15

# 定时任务
sudo crontab -e

# 查询对应端口的service
sudo netstat -plant | grep 80

# 检查服务的状态
systemctl status nginx

# 可以解决一些服务不可见的问题
systemctl daemon-reload

# 启动,终止,和重启进程
systemctl start mongod
systemctl stop mongod
systemctl restart mongod

# 让进程随系统自启动,开机启动
systemctl enable mongod

# centos7 防火墙添加端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

# centos7 查看所有现有规则
firewall-cmd --list-ports

# centos7 开启端口区间
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent

# 查看端口占用情况
netstat -tunlp | grep 8080

# 查看主机名称
hostname

# 修改主机名称
hostnamectl set-hostname custom-host

# 挂载镜像
mount -o loop *.ios /mnt

# 取消挂载
umount /mnt

# 查看文件所在的文件系统
df ~/mount-dir

# centos/redhat 升级历史
yum history

# centos/redhat 升级回滚
yum history undo {history id}

# centos/redhat 展示所有重复的安装
yum list openssl-libs --show-duplicates

# 降级指定的软件
yum downgrade openssl-libs

# 实时修改内核运行参数
sysctl vm.swappiness=10

# 在已执行命令中查找指定内容
history | grep <search>

# 查看内存占用
free -m

# 清理内存
echo 1 > /proc/sys/vm/drop_caches

# 树形结构查看目录
tree /etc

# 将source的内容追加到target内容之后
cat source.csv >> target.csv

# 统计文件行数。还有其他选项:-c统计字节数,-m统计字符数,-w统计字数,-L打印最长行的长度
wc -l target.csv

# 磁盘占用情况,挂载情况
df -h

# 查看哪个目录占用空间最大
du -s /* | sort -nr

# 查看当前目录下文件大小情况
du -h --max-depth=1

# 查看删除的文件是否被进程占用
lsof | grep deleted

# 登录没有shell的服务账号,比如jenkins
sudo su -s /bin/bash jenkins

# 文件校验sha-256
shasum -a 256 web.jar

# 查看所有进程
ps aux

# 查看指定匹配参数进程
ps aux | grep java

# 删除已输入命令
control/ctrl + c

# 删除光标前的所有命令
control/ctrl + u

# 往回删除一个单词
control/ctrl + w

# 删除光标以后的单词
control/ctrl + k

# 移动光标到命令头
control/ctrl + a

# 移动光标到命令尾
control/ctrl + e

# 清屏
control/ctrl + l

# trace域名
traceroute www.google.com

# 更新指定文件的时间属性为当前系统时间,如果文件不存在会自动创建(这里会创建0,1,2三个文件)
touch test/{0,1,2}

# 查看cpu核心数
lscpu

# 动态图表查看当前网络状态
nethogs

# 查看当前目录下的文件大小
du -sh *

# 把指定命令输出的内容作为当前命令的一部分
vi `ls`

# 查看磁盘和分区
lsblk

# 挂载指定磁盘
mount /dev/sdb2 /mnt

# 查看指定挂载硬盘的详细信息,包括文件系统类型和uuid等
file -s /dev/sda3

# 关闭wifi
nmcli radio wifi off

# 启用wifi
nmcli radio wifi on

# 查看当前rpc网络端口使用情况
rpcinfo -p

# 修改指定用户对指定文件的权限
setfacl -R -m u:username:rwx myfolder