工作中遇到的一些linux常用命令总结
零、查看历史命令,linux中可按“↑” “↓”查找之前输入的命令,亦可用 history 命令查看之前的输入,linux中的亦有“Tab”键可联想输入
一、root权限: 1、su 之后输入root密码进入root模式
2、root执行相关shell sudo sh demo.sh
二、文件及文件夹相关
1、查看当前工作路径: pwd
2、查看当前文件夹下的文件:ls
3、进入文件夹: cd 文件夹名
4、仅仅查看文件内容:cat 文件名
5、编辑文件: vim 文件名
5.1退出vim(vi): esc 后 输入“:q”不保存退出;
esc 后 输入“:wq”保存退出;
esc 后 输入“:x”保存退出,若没有修改内容,则不会改变日志更新时间
(有些Arm开发板上没有vi命令时,可以尝试下nano命令,和sed命令)
编辑文件: nano 文件名
6、解压.tar后缀的压缩包:tar –xvf file.tar (其他后缀压缩包解压各有不同)
将文件夹下所有包压缩成zip格式:zip -r myfile.zip ./*
解压zip:unzip -o -d /home/workspace myfile.zip
7、将本服务器文件传到另一服务器: scp 文件名 用户名@计算机IP或者计算机名称:远程路径
8、查看服务器空间:df -h
9、查看当前目录下一级子文件和子目录占用的磁盘容量:du --max-depth=1 -h
三、测试端口及ip相关
1、ping相应ip: ping 192.168.110.110
2、telnet ip port: telnet 192.168.110.111 22 (22为ssh端口,一般情况均会开启)
退出telnet :ctrl + ] 之后输入quit
3、traceroute ip:port 上述命令也许需要安装
4、netstat -ntul 查看正在监听的端口(t tcp u udp)
5、抓包!:tcpdump (此命令具体看情境使用,可直接抓网卡或筛选后抓包)
四、进程相关命令
1、ss命令可以便捷的统计socket信息 (效率高)
-t tcp
-l listening
-a all
-m memory 显示内存情况
-n 不解析服务器名称
例子:ss -nl |grep 9999 显示9999端口是否开启
2、top 动态显示进程
3、ps :静态显示正在运行的进程
例1、ps -aux 以列表形式显示进程
例2、ps -elf 以长格式显示系统进程,包含更丰富内容
例3、详解ps -ef|grep:
ps命令将某个进程显示出来 grep命令为查找命令 “|”表示管道命令(ps.grep)两个命令同时进行
eg:检查java进程是否存在: ps -ef|grep java, 输出字段如下:
UID PID PPID C STIME TTY TIME CMD
admin 1223 1111 0 00:32 pts/0 00:00:07 grep --color=auto dae
UID:程序被此uid所有
PID:程序id
PPID:上级父程序id
C: CPU所用的资源百分比
STIME:系统启动时间
TTY:登入者的终端机位置
TIME:使用掉的CPU时间
CMD:所下达的是什么命令
4、pstree
eg : pstree -p 1110|wc -l
(可显示1110进程下的线程数量,去掉wc-l 可显示具体线程号)
5、pstack 进程号,显示堆栈
(安装的pstack有问题时,自行实现下述shell,可传入进程号)
#!/bin/sh if test $# -ne 1; then echo "Usage: `basename $0 .sh` <process-id>" 1>&2 exit 1 fi if test ! -r /proc/$1; then echo "Process $1 not found." 1>&2 exit 1 fi # GDB doesn‘t allow "thread apply all bt" when the process isn‘t # threaded; need to peek at the process to determine if that or the # simpler "bt" should be used. backtrace="bt" if test -d /proc/$1/task ; then # Newer kernel; has a task/ directory. if test `/bin/ls /proc/$1/task | /usr/bin/wc -l` -gt 1 2>/dev/null ; then backtrace="thread apply all bt" fi elif test -f /proc/$1/maps ; then # Older kernel; go by it loading libpthread. if /bin/grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; then backtrace="thread apply all bt" fi fi GDB=${GDB:-/usr/bin/gdb} if $GDB -nx --quiet --batch --readnever > /dev/null 2>&1; then readnever=--readnever else readnever= fi # Run GDB, strip out unwanted noise. $GDB --quiet $readnever -nx /proc/$1/exe $1 <<EOF 2>&1 | set width 0 set height 0 set pagination no $backtrace EOF /bin/sed -n -e 's/^\((gdb) \)*//' -e '/^#/p' -e '/^Thread/p' #end
四、firewall防火墙相关
1、启动防火墙: systemctl start firewalld
2、关闭防防火墙:systemctl stop firewalld
3、开机自启防火墙:systemctl enable firewalld
4、显示防火墙状态:firewall-cmd --list-all 此命令在防火墙未启动时不可显示
注意:下面命令在防火墙开启时才可设置,且设置成功后,均需要重新载入防火墙配置(即执行)firewall-cmd --reload才会生效
5、添加ip白名单:firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24 ,/24为保留最后一位,/16为保留最后两位
6、添加端口: firewall-cmd --zone=public --add-port=22/tcp --permanent
7、删除白名单和端口,只需将上面两条命令中的 “add” 改成 “remove”
五、iptables防火墙相关
1、安装iptables:yum install -y iptables
yum install iptables-services
2、查看iptables状态:service iptables status
3、查看iptables规则:iptables -L
iptables -nvL –-line-number 可看到行数等稍具体的信息
4、清除iptables规则:iptables -F
5、规则相关:
添加iptables规则禁止ip访问:
iptables -I INPUT -s 192.168.101.196/24 -j DROP
iptables -I INPUT 3 -s 192.168.101.196/24 -j DROP (将规则写入第三行)
-D删除第二行规则:iptables -D INPUT 2
-R修改第二行规则:iptables -R INPUT 3 -j ACCEPT
修改规则后均需要:service iptables save
service iptables restart
6、设置iptables自启及查看状态:systemctl enable iptables.service 自启
systemctl start iptables.service 启动
systemctl status iptables.service 看状态
(水平有限,日志基本作记录本之用,欢迎指正错误,欢迎交流)