查看操作系统位数: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
Mount是把盘挂到目录上,卸载也是卸载挂载点