进程和端口相关
- 查看端口占用
查看端口 8080 的使用情况:
netstat -tln | grep 8080
- 查看端口属于哪个程序
(list open files) 是一个列出当前系统打开文件的工具
lsof -i :8080
用于显示tcp,udp的端口和进程等相关情况:netstat -tunlp
- 新开端口
su 切换到 root 下,输入密码:XXXX,直接执行以下命令:
0.查看状态:iptables -L -n
1.以6016 端口为例:/sbin/iptables -I INPUT -p tcp --dport 6016 -j ACCEPT
2.保存命令:/etc/rc.d/init.d/iptables save
3.查看状态:/etc/init.d/iptables status
- 查看进程
表示查看所有进程里 CMD 是 java 的进程信息: ps -ef | grep java
查看java进程,-aux 显示所有状态:ps -aux|grep java
查看所有进程:ps aux
用于查看指定端口号的进程情况:netstat -tunlp|grep 端口号
- 查看程序是否运行
查看 java 进程: ps -ef|grep java
查看 tomcat 进程: ps -ef|grep tomcat
- 终止进程
终止进程号位19979的进程:kill -9 19979
优雅的停止:kill 进程号
netstat 命令介绍
netstat 命令用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况
-a 显示一个所有的有效连接信息列表(包括已建立的连接,也包括监听连接请求的那些连接)
-n 显示所有已建立的有效连接
-t tcp 协议
-u udp 协议
-l 查询正在监听的程序
-p 显示正在使用 socket 的程序识别码和程序名称
- 通过端口号获取进程号
方式一:
netstat -tunlp|grep 6019
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况
方式二:
lsof -i:6019
lsof -i 用以显示符合条件的进程情况,lsof(list open files) 是一个列出当前系统打开文件的工具。
- 获取某个进程的网络端口号
查看进程号为 20446 的端口号,如图箭头所指“6016”即是;方框显示的是该程序所调用的端口,包括
mongodb 的 27017,mysql (显示了别名,其实是 3306),rabbitmq 的 amqp(其实是 5672)
netstat -ap | grep 20446
不显示别名:
netstat -anp | grep 20446
- 显示当前正在监听的服务名称
netstat -tl
- 查看开启了哪些端口
netstat -lntp
- 查看系统监听的端口
netstat -na|grep -i listen
- 查看已建立的连接进程,所占用的端口
netstat -antup
- 查看后台运行的进程总数
ps -ef|wc -l
- 查看 java 进程
ps -aux | grep java 或
ps -ef | grep java
(grep ——global search regular expression(RE) and print out the line 全文正则匹配并打印)
ps:将某个进程显示出来
-A 显示所有程序。
-e 此参数的效果和指定"A"参数相同。
-f 显示UID,PPIP,C与STIME栏位。
grep命令是查找
中间的|是管道命令 是指ps命令与grep同时执行
UID PID PPID C STIME TTY TIME CMD
各相关信息的意义:
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 系统启动时间
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
查看连接状态
- 各种连接
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
解释: 返回结果示例:
LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30
ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
并发连接数
netstat -nat|grep ESTABLISHED|wc -l
查看某个端口的连接数
netstat -nat | grep -iw "9090" | wc -l
查看连接状况
netstat -nat | grep -iw "9090"
网络操作
查看网络通不通 ping www.baidu.com
ubutu@10-10-80-30:~$ ping www.baidu.com PING www.a.shifen.com (180.97.33.108) 56(84) bytes of data. 64 bytes from 180.97.33.108: icmp_seq=1 ttl=48 time=27.6 ms 64 bytes from 180.97.33.108: icmp_seq=2 ttl=48 time=27.6 ms 64 bytes from 180.97.33.108: icmp_seq=3 ttl=48 time=27.5 ms 64 bytes from 180.97.33.108: icmp_seq=4 ttl=48 time=27.6 ms
telnet 域名/IP 端口号
test_user@10-10-80-30:~$ ttelnet www.baidu.com 80 Trying 61.135.169.125… Connected to www.a.shifen.com. Escape character is ‘^]’.
hosts 加入域名
1.使用root sudo vi /etc/hosts 按 “Inter”输入, 按 “Esc”,”:wq” 保存退出
搜索相关
grep
- 统计某个字符串的行数
grep -wi -c Eleme info-20180322.log_0
统计 emele 的行数,忽略大小写
- 使用 grep 搜索
查询关键字 eleme、412、413 并高亮
grep -wi --color 'eleme\|412\|413' info-20180322.log_0 xxxxxxxxxx
查询字符串出现次
grep -o '复制' info.log | wc -l
文件操作相关
文件复制
复制文件:cp source dest source :原文件, dest : 要复制到的目录
递归复制整个文件夹:cp -r sourceFolder targetFolder
远程拷贝:scp sourecFile romoteUserName@remoteIp:remoteAddr
- 删除目录
删除空目录:rmdir deleteEmptyFolder
递归删除目录中所有内容:rm -rf deleteFile
删除除指定文件以外的文件及文件夹:
rm -rf `ls |grep -v "redis.conf" `
- 创建文件
vi filename
- 移动文件
mv /temp/movefile /targetFolder
- 重命名
mv oldNameFile newNameFile
- 修改文件权限
file.java的权限 -rwx-rwx-rwx,r 表示读、w 表示写、x 表示可执行:chmod 777 file.java
- 文件查看
查看文件头10 行:head -n 10 info.log
查看文件尾10 行:tail -n 10 info.log
查看文件尾10 行并监听文件:tail -10f info.log
- 文件查找
find /dir -name filename [在目录 dir 下查找文件名为 filename 的文件]
find . -name “*.log” [在当前目录下查找扩展名为 log 的文件]
- 打包文件夹
zip 方式
zip -r ./eleme.zip ./eleme/ 压缩当前文件夹下的 eleme 文件夹 为 eleme.zip
zip -r ./eleme.zip ./*/ 压缩当前文件夹下的所有文件 为 eleme.zip
unzip test.zip 将压缩文件 text.zip 在当前目录下解压缩
unzip -v test.zip 查看压缩文件目录,但不解压
unzip -n test.zip -d /tmp 将压缩文件 text.zip 在指定目录 /tmp 下解压缩,如果已有相同的文件存在,要求 unzip 命令不覆盖原先的文件
unzip -o test.zip -d /tmp 将压缩文件 test.zip 在指定目录 /tmp 下解压缩,如果已有相同的文件存在,要求 unzip 命令覆盖原先的文件
tar 方式:
-z : gzip压缩
tar -czvf log.tar log.info : 压缩单个文件
tar -czvf log.tar log.info 2018-03-22-info.log 压缩多个文件
tar -czvf my.tar dir1 dir2 多个目录压缩打包
解包至当前目录:tar -zxvf my.tar
tar -ztvf log.tar.gz 查阅 tar 包内有哪些文件
tar -zxvf test.tar test.txt 解压部分文件
>注:c 参数代表 create(创建),x 参数代表 extract(解包),v 参数代表 verbose(详细信息),f 参数代表 filename(文件名),所以 f 后必须接文件名。
传包
scp Alipay.jar 用户名@127.0.0.1:/usr/work/alipay
拷贝 从其他目录拷贝文件到当前目录:
先进入当前目录,然后:cp 源文件目录 . ( .代表当前目录)
日志查看
- 按行号查看,过滤出关键字附近的日志
①先查看关键字所在的行号:
cat -n info-20180319.log_0 | grep '权限'
②‘权限’所在行号是 102,查看这个关键字前 10 行和后 10 行的日志:
cat -n info-20180319.log_0 | tail -n +92|head -n 20
说明: tail -n + 92 表示查询 92 行之后的日志 head -n 20 则表示在前面的查询结果里再查前 20 条记录
如果日志比较多可以分页查看:
cat -n info-20180319.log_0 | grep '权限' | more
或者写入文件:
cat -n info-20180319.log_0 | grep '权限' > xxx.log
2.按日期查看
sed '/2018-03-19 00:02:40/,/2018-03-19 01:02:40/p' info-20180319.log_0
linux 打开文件数 too many open files 解决方法
查看每个用户最大允许打开文件数量 ulimit -a
zhxdidi@web-mod md-consume]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 172032 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 172032 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
其中 open files (-n) 1024 表示每个用户最大允许打开的文件数量是 1024
查看当前系统打开的文件数量 (list open files)是一个列出当前系统打开文件的工具
lsof | wc -l 或 watch "lsof | wc -l" 每 2 秒监控
查看某一进程的打开文件数量
lsof -p pid | wc -l pid 为进程号
设置 open files 数值方法 方式一:临时
ulimit -n 2048
方式二:永久
vim /etc/security/limits.conf 在最后加入 * soft nofile 4096 * hard nofile 4096 最前的 * 表示所有用户,可根据需要设置某一用户 重启系统,通过shutdown -r now 命令重启即可。
系统管理相关
- 查看空间大小
磁盘空间:df -h
目录大小:du -sh *
- chmod 命令
该命令用于改变文件的权限,一般的用法如下:
chmod [-R] xyz 文件或目录
-R:进行递归的持续更改,即连同子目录下的所有文件都会更改
同时,chmod 还可以使用 u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟 rwx 搭配来对文件的权限进行更改。
# 例如:
chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
chmod g+w file # 向file的文件权限中加入用户组可写权限
权限范围的表示法如下:
u
User,即文件或目录的拥有者; g
Group,即文件或目录的所属群组; o
Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; a
All,即全部的用户,包含拥有者,所属群组以及其他用户; r
读取权限,数字代号为“4”; w
写入权限,数字代号为“2”; x
执行或切换权限,数字代号为“1”; -
不具任何权限,数字代号为“0”; s
特殊功能说明:变更文件或目录的权限。
777 代表: rwxrwxrwx ,意思是该登录用户(可以用命令 id 查看)、他所在的组和其他人都有最高权限。
r=4,w=2,x=1
若要 rwx 属性则 4+2+1=7;
若要 rw- 属性则 4+2=6; 若要 r-x 属性则 4+1=5。
-rw------- (600) -- 只有属主有读写权限。
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) -- 只有属主有读、写、执行权限。
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。
- 查看 Linux 系统位数
方法一:
file /sbin/init 或者 file /bin/ls
方法二:
uname -a
方法三:
getconf LONG_BIT
- 查看内核数 方法一:
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
方法二:
cat /proc/cpuinfo |grep "processor"|wc -l
查看磁盘大小
df -h
df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文件夹总 M 数
更多功能可以输入一下命令查看:
df –help du –help
查看内存大小
free -m 按M计算
- 查看 CPU 使用率
实时 CPU 使用率:
top
CPU 处理器使用率:
cat /proc/stat cpu
平均 CPU 使用率:
cat /proc/loadavg
查看 CPU 基本信息
cat /proc/cpuinfo
命令 Crontab
linux 自带的定时任务
- 查看是否安装了 crontab
rpm -qa | grep crontab
- 服务启动、关闭
启动:/etc/init.d/crond start 关闭:/etc/init.d/crond stop 重启:/etc/init.d/crond restart 重新载入配置:/etc/init.d/crond reload
- 配置文件
在 etc/目录下存在 cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d 五个目录和 crontab,cron.deny 二 个文件
- 查看 cron
crontab -l
- 编辑
crontab -e
新增用户
1.新增用户 username
sudo useradd username
2.给用户 username 设置密码:
sudo passwd username
useradd 命令添加用户,则默认用户名和组都是相同的名称;
/etc/passwd 文件纪录的系统所有用户列表;
/etc/group 文件纪录系统的组信息。
3.将用户添加到 wheel 组,否则无法使用 sudo 命令
sudo usermod -G wheel username
4.查看用户所属组
groups
禁止 root 远程登录
1.修改 ssh 配置文件:sudo vi /etc/sshd_config,将 PermitRootLogin 设置为 no
2.重启 ssh 服务:sudo systemctl restart sshd
文档信息
- 本文作者:Zhang jinmiao
- 本文链接:http://zhangjinmiao.github.io/linux/2018/04/22/%E5%B8%B8%E7%94%A8Linux%E5%91%BD%E4%BB%A4.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)