Linux 常用命令

查看操作系统位数:uname -a ,如果有x86_64就是64位的,没有就是32位的

远程

ssh root@192.0.0.1
scp -r root@116.62.123.50:/root/a/file1 /Users/jack/Downloads/           拷贝远程 file1 到本地
scp root@116.62.123.50:/root/dir1/file1 /Users/jack/Downloads/           拷贝远程文件夹 dir1 到本地
scp /Users/jack/Downloads/file1 root@116.62.123.50:/root/dir1/           拷贝本地文件到远程
scp -r /home/myfile/ root@116.62.123.50:/data/             拷贝文件夹到远程

telnet 192.168.0.1 8080         查看端口是否通

wget http://10.101.95.183:8000/root/jdbc.properties -P ~/classes         下载到 classes 目录,如果目录不存在,自动添加。
wget http://10.101.95.183:8000/root/jdbc.properties -O ~/classes/jdbc.properties          下载到 classes 目录,如果目录不存在,下载失败
wget -nc               如文件已存在,则不下载

nslookup www.baidu.com          解析域名
        如果使用 nslookup www.google.com  出现 timeout,那肯定是 DNS 服务器本身坏了

ping 端口测速

如果用户没有开 22 端口,但是开了其他端口,这时候要测速:

下载 https://nmap.org/download.html   
安装 rpm -vhU nping-0.7.80-1.x86_64.rpm
使用 [admin@iZbp1adrj9n2uq4lrfx9ajZ ~]$ nping -p 4464 10.0.48.1

Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2020-06-24 11:35 CST
SENT (0.0015s) Starting TCP Handshake > 10.0.48.1:4464
RCVD (0.0040s) Handshake with 10.0.48.1:4464 completed

Max rtt: 3.034ms | Min rtt: 2.540ms | Avg rtt: 2.826ms

查看机器公网地址:curl v4.ident.me

查看默认路由:route -n | awk '/eth0/ {print $2}' | grep -v 0.0.0.0 | head -n 1

进程

ps –aux            显示所有running process,u 代表执行该进程的用户
lsof –i :8080            通过端口查进程
netstat –apn | grep 8080            查看端口被谁占用
netstat –apn | grep pid            查看进程占用了哪些端口,以及访入访出的端口
ps -eo pid,cmd,lstart | grep 1402     (最后是自己的 pid)查看进程启动时间

ps -p 13518 -o pid,cmd,lstart     查看进程启动时间
ps -p PID -o lstart,etime           查看进程启动时间
jstack 793 | grep 'election-thread'          查看一个进程的所有线程
lsof -p 21969           查看进程加载了哪些 jar 包
ll /proc/3134            查看进程详细信息
ps -ef         第二列是进程 id,第三列是父进程 id
ps -auxef

性能

vmstat            整个机器,CPU使用,内存使用,虚拟内存交换,IO读写情况
                       这个命令很有用,返回结果参考:Linux vmstat命令详解 - 小a玖拾柒 - 博客园

cat /proc/cpuinfo| grep "cpu cores"| uniq             查看物理 cpu 核数
cat /proc/cpuinfo| grep "processor"| wc -l             查看逻辑 cpu 核数,参考 理解linux下的load - gentleman_hai - 博客园

free -m                 内存(used,total,free),单位 MB,关于详细返回值:free中的buffer和cache - 笨鸟教程的博客 | BY BenderFly
free -g                  单位 GB

argus --memory -t 20201109          查看当天整台机器的内存变化历史,其中 cache 代表曾经打开文件,内存不足时,系统会自动清理的。
作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到 cache 的文件较多。参考:linux下的缓存机制buffer、cache、swap - 兔大锤 - 博客园

手动清理 cache
1)清理pagecache(页面缓存)
[root@backup ~]# echo 1 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
[root@backup ~]# echo 2 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
[root@backup ~]# echo 3 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=3

uptime                  23:56:15 up 3 days, 41 min,  0 users,  load average: 11.75, 11.64, 11.89,后面 3 个数字分别是 1min,5min,15min 的 load average,如果 load average 长期 > CPU 数 * 0.7,就有一定问题了。参考 CPU核数和load average的关系_像Storm一样飞-CSDN博客

dstat       查看每个 cpu 的负载,idl 越高越健康

vmstat 2 1            2表示每个两秒采集一次服务器状态,1表示只采集一次
top            查看进程资源,cpu,内存,按 q 退出
        top -n 1 -b  | egrep "27335"
        top -d 2    每隔5秒显式所有进程的资源占用情况 
            -n : 采集次数
            -d:  采集间隔,默认 5 s。

top 命令详解:Linux系统监控——top命令_像Storm一样飞-CSDN博客_top监控, top 里 CPU 使用率是所有 CPU 加起来的,如果某个进程的显示超过 100%,则说明机器是多核的。

top 命令下按 1,可以看到每个 CPU 的使用率。参考:linux下用top命令查看cpu利用率超过100%_huangshanchun的专栏-CSDN博客

mpstat          另一个实时监控命令

load= process/total_cpu_cores
load average 的概念:每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值,然后用这个值和当前机器的cpu核数进行相除,得到的值。参考:Linux vmstat命令详解 - 小a玖拾柒 - 博客园

性能检测常用 10 个命令              Linux性能检测常用的10个基本命令 - 简书
关于负载                                      服务器性能指标(一)——负载(Load)分析及问题排查-HollisChuang's Blog

ps aux --sort -rss      查看各进程的内存使用 

系统日志

dmesg

用户

cat /etc/passwd       可以查看当前机器所有用户

看第三个参数:500以上的,就是后面建的用户了。其它则为系统的用户。

cat /etc/group

useradd username      新建一个用户

passwd username      为用户设置密码

usermod -g root username       给用户设置 root 权限,su username 切换到用户为 username  ,以$开头是普通用户;

如何创建用户并赋予 root 权限:如何将linux下的现有用户加到管理员root组_百度知道

sudo userdel -r XXX       删除用户

   如果出现 userdel: user XXX is currently logged in,

免登

问题:
假如我们现在有两台机器:ServerA和ServerB,现在想要让ServerA不用输入密码就能够进行访问。
方法和原理:
我们使用ssh-keygen在ServerA上生成private和public密钥,将生成的public密钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSR算法】,该工具做linux系统的远程管理是非常安全的。
步骤:
1.登录 ServerA
2.ssh-keygen -t rsa,将会生成公钥和私钥文件id_rsa和id_rsa.pub, 在 /home/$USER/.ssh 目录里
3.将 .pub 文件复制到ServerB机器的 .ssh 目录下,并保存为 authorized_keys,如果 authorized_keys 已存在,就追加。

操作文件

mv A B        将目录/文件 A 重命名为 B
echo 2 > 2.txt            将 “2” 写入到 2.txt
cp file1 file2            拷贝文件
cp -r dir1 dir2            拷贝文件夹
open ~    open /home/     open .               打开文件夹

chmod +x file2              跟 file2 添加执行功能
chmod 777 file2        
chmod u+x,g+w file1           为文件设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r f01 
chmod 764 f01 chmod a+x f01   对文件f01的u,g,o都设置可执行属性
chmod 4755 与 chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限

stat file1              查看 file1 创建,修改 时间

找到文件夹下所有 7 天前的文件,并删除
             http://www.runoob.com/linux/linux-comm-find.html
    find /home/admin/logs/aaa -type f -mtime +7 -exec rm -f {} \;
    rm -rf (r代表递归)
    find /home/admin/logs/jwlog -type f -mtime +1 -exec rm -rf {} \;
找到文件夹下所有 7 分钟前的文件,并删除
    find /home/admin/logs/aaa -type f -cmin +7 -exec rm -f {} \;
找到当前目录下所有文件(最深只搜索一层)
    find DirsRoot/ -maxdepth 1 -type f 

unzip file1.zip           .zip 文件解压
gzip -d file1.gz          解压,等同 gunzip file1.gz
gzip file1            压缩成 .gz 文件

tar -cvzf dir2.tar.gz dir2
tar -xvzf dir2.tar.gz

jar

解开 jar 文件      jar -xf a.jar
生成 jar 文件
Example 1: to archive two class files into an archive called classes.jar:
       jar cvf classes.jar Foo.class Bar.class
Example 2: use an existing manifest file 'mymanifest' and archive all the
           files in the foo/ directory into 'classes.jar':
       jar cvfm classes.jar mymanifest -C foo/ .
根据文件夹生成 jar 包
jar -cvf jingwei-common-3.2.12-SNAPSHOT.jar jingwei-common-3.2.12-SNAPSHOT/*

查看文件

ls -lht            显示当前所有文件,并按时间排序
ls -a             显示所有文件,包括隐藏
ls -d /home/admin/*/       只查看文件夹

find . | grep "1.bat"            递归查找当前目录下名为 1.bat 的文件
find . 或 find /home/dreftymac         递归显示文件夹所有文件
find /home/dreftymac -type f          递归显示,只显示文件
find /home/dreftymac -type d          递归显示,只显示文件夹

grep -Ril "text-to-find-here" /          查找文件内容
    • i stands for ignore case (optional in your case).
    • R stands for recursive.
    • l stands for "show the file name, not the result itself".
    / stands for starting at the root of your machine.
grep -E "word1|word2|word3"   file.txt       查找多个语句

cat file1 file2 > file3            将 file1, file2 内容合并到 file3
cat -n log2012.log log2013.log            把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

head -5 file1            查看 file1 前 5 行
tail -5 file1            查看 file1 后 5 行
tail -f file1            自动读取 file1 最新内容
sed -n '2,4p' file1            只查看 file1 第 2 到 4 行

grep "abc" a.txt            在 a.txt 文件中查找 “abc”
ps -ax | grep Skype            过滤查找带 Skype 的语句
zgrep a file1.gz             直接查找 .gz 文件,不用解压

od -xc file1           以二进制查看文件
file file1             查看文件编码格式

awk '{print $1, $2}' file1          以空格划分,只显示第 1,2 列,$0 表示整个行
         AWK 简明教程 | 酷 壳 - CoolShell

grep -w "1" a.txt       严格匹配

grep,sed,awk

Linux命令-grep,sed,awk - 触不可及` - 博客园

磁盘

df -h            查看磁盘使用概况
du -hs            查看文件夹大小(需进入文件夹)
du -smh * | sort -n             统计当前目录大小,并按大小排序
du -sk * | grep filename             查看一个文件夹的大小
du -sh * | sort -n             统计当前文件夹的子目录大小,并按文件大小排序
du -shb * | sort -n           同上,单位统一为 byte
du -sk filename             查看指定文件大小
du -lh --max-depth=1            查看当前目录下一级子文件和子目录占用的磁盘容量
    -h:以人类可读的方式显示
    -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
    -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
    -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和

案例 1:
用 df -h 查看,磁盘占用为100%。
删除了几个G的文件,再用df -h查看,无变化。
原来删除被运行中的应用程序使用的文件,是不会释放磁盘空间的。
用 lsof|grep delete,查看这些被删除的文件句柄谁哪个进程持有,杀死该进程。

其他

which java            查看 java 安装路径

date            显示时间
sudo date --set="2019-02-28 20:32:36"            设置时间

ifconfig            查看本机 ip

su jack            切换到 jack 账户

cat /proc/cpuinfo          查看 cpu 核数

ctrl+a:光标移到行首。
ctrl+e:光标移到行尾。

history            查看历史命令

Bash 通过上下键更有效的查找历史命令

我们知道在 bash 里,可以通过 “上下” 键来浏览最近执行过的命令历史纪录(history),我们也知道如果历史纪录太多的话可以通过 ctrl+r 来查找命令或者通过 history 命令来浏览历史命令。我们不知道的是(也许只有本人不知道~),还有一种神奇的办法可以更准确、有效的在历史命令纪录中查找自己想要的命令。
在自己的用户主目录(home directory)新建一个 .inputrc 文件:
$ vi ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on
退出 bash 后重新登陆,敲打一个字母或者几个字母,然后 “上下” 键,就会看到以这个字母搜索到的完整命令行。
退出:ctl + c

添加系统PATH

http://www.cnblogs.com/caowei/p/mac-path_2013-08-26.html
/etc/profile;/etc/bashrc 是针对系统所有用户的全局变量,只有 root 用户才能修改这两个文件,对一般用户来说是他们是只读的。一般用户要想修改它们:sudo vi /etc/profile
因此,对于一般用户而言,通常我们建议去修改~/.bash_profile来设置环境变量,它是用户级的设置,只对当前用户有效。
        vi ~/.bash_profile
        设置PATH:export PATH=/usr/local/mysql/bin:$PATH
        保存并退出vi
        修改立即生效:source ~/.bash_profile
        查看环境变量的值:echo $PATH
注意:1、~/.bash_profile中有个点
        2、如果是新增环境变量或者是修改环境变量的值,都需要source一下才能立即生效。如果是删除一个环境变量,必须输入exit以logout当前shell,然后再重新打开一个新的shell并login才能生效。

more

more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上
more可以按页来查看文件的内容,还支持直接跳转行等功能。
    Command + F 搜索,用Enter 向下找
    +n      从笫n行开始显示
    -n       定义屏幕大小为n行
    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  
    Enter    向下n行,需要定义。默认为1行
    Ctrl+F   向下滚动一屏
    空格键  向下滚动一屏
    Ctrl+B  返回上一屏
    =       输出当前行的行号
    :f     输出文件名和当前行的行号
    V      调用vi编辑器
    !命令   调用Shell,并执行命令 
    q       退出more

lsof

linux lsof命令详解 - 星火spark - 博客园

1.列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

2. 查看谁正在使用某个文件
lsof   /filepath/file

3.递归查看某个目录的文件信息
lsof +D /filepath/filepath2/
备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法
lsof | grep ‘/filepath/filepath2/’

5. 列出某个用户打开的文件信息
lsof  -u username
备注: -u 选项,u其实是user的缩写

6. 列出某个程序所打开的文件信息
lsof -c mysql
备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比第二种方法要少打几个字符了

7. 列出多个程序多打开的文件信息
lsof -c mysql -c apache

8. 列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql

9. 列出除了某个用户外的被打开的文件信息

lsof   -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

10. 通过某个进程号显示该进行打开的文件

lsof -p 1
11. 列出多个进程号对应的文件信息
lsof -p 123,456,789

12. 列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1

13 . 列出所有的网络连接
lsof -i

14. 列出所有tcp 网络连接信息
lsof  -i tcp

15. 列出所有udp网络连接信息
lsof  -i udp

16. 列出谁在使用某个端口
lsof -i :3306

17. 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80

18. 列出某个用户的所有活跃的网络端口
lsof  -a -u test -i

19. 列出所有网络文件系统
lsof -N

20.域名socket文件
lsof -u

21.某个用户组所打开的文件信息
lsof -g 5555

22. 根据文件描述列出对应的文件信息
lsof -d description(like 2)

23. 根据文件描述范围列出文件信息
lsof -d 2-3

sh 脚本

echo "text" > 'Users/Name/Desktop/TheAccount.txt'      输出结果会 overwrite

echo "text" >> 'Users/Name/Desktop/TheAccount.txt'      输出结果 append

chrom 快捷清缓存

chrome://net-internals/#hsts

# 杀死所有 Launcher 进程

for pid in `ps -ef |grep Launcher| awk '{print $2}'` ; do kill -9 $pid ; done

# 获取某个 docker 容器并拿到 log 地址

docker ps  | grep k8s_receive | awk '{print $1}' | xargs docker inspect | grep log

查看某个用户的信息

$id admin
uid=1031(admin) gid=1031(admin) groups=1031(admin)

umount & mount

umount命令详解 - 马昌伟 - 博客园

Mount是把盘挂到目录上,卸载也是卸载挂载点


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值