本文列举了一些场景的基础命令、基本用法。各场景还有更优的命令或工具,精力有限未整理,如有补充欢迎留言。
目录
基础
目录与文件
磁盘
进程
账号
网络
系统服务
其他场景
描述 | 命令 | 示例/详解 |
---|---|---|
登录后切换账户 | su | su root |
退出 | exit | |
取消 | ctrl+c | |
退出命令输出流 | q | 部分命令提供(如man、top) |
根路径 | / | cd / |
当前登录用户默认路径 | ~ | cd ~ |
隐式文件前缀 | . | cat ~/.bash_history |
目录或文件名自动补全 | Tab键 | |
查找命令 | where或which | |
命令解释 | man 具体命令 | man cat |
查看时间 | date | |
查看历史指令 | cat ~/.bash_history | 一般可用于快速重放以前输入的指令,也可用于嗅探系统关键路径和服务 |
系统环境变量 | /etc/profile | 修改后要即时生效可以执行source /etc/profile |
常见指令参数 | -a -l -r -h |
全部:-a,列表:-l,数量统计:-c,目录递归:-r, 自动转换空间单位:-h,显示进度:-v |
系统关键路径 | /bin; /sbin; /proc; /etc; ~/; | |
输出/打印文本 | echo | echo "test" |
统计行数 | {内容} | wc -l | cat /etc/passwd | wc -l |
检索 | 1. grep expression file 2. {内容} | grep expression |
(expression为正则匹配表达式)
|
切换路径:cd directory
创建目录:mkdir 目录名,实用参数(-p),常见于嵌套创建多级、多分支目录,比如mkdir -p test/tes/t{1,2,34}
创建软连接:ln -s [src] [name]
查看当前路径:pwd
查看当前路径下文件:ls,ls -l(一般会声明别名ll=ls -l)
创建文件:touch file
编辑文件:vi file或vim工具,保存操作为按“Esc”后输入 “:”,确认保存输入“w”“q”回车,不保存直接退出输入“q”“!”回车
查看文件:more file或less file,具体可参考 http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html
查看文件尾部:tail [f] file,可用参数-f,-100
查看文件头部:head,类似与tail
查看及链接文件:cat file1, file2 ...
写入文件:echo $text >> $file(>> 表示追加,>则是覆盖写入)
引申使用场景
tomcat等容器运行中,清理日志;一般因为应用程序保持着句柄,删掉文件是不会重建文件的;
cat /dev/null > /var/log/httpd/access.log
其他方案
$ : > filename
$ > filename
$ echo "" > filename
$ echo > filename
上述方案执行后,文件大小是不一样的。
1和2 两种方式,是0kb
3和4 两种方式,是1kb;使用grep会提醒文件变成二进制文件,应该是文件头丢失
日志自动切割、清理:https://blog.csdn.net/qq_29269907/article/details/84328269
输出同时写入文件:echo $text | tee -a $file
压缩与解压缩:
上传文件到服务器:rz
从服务器下载文件:sz source
如果提示没有命令,可执行`yum -y install lrzsz`安装
向其他服务器发送文件:scp source user@host:directory(file)
从其他服务器获取文件:scp [-P 端口号] user@host:directory(file) local_directory
磁盘占用:df,du
当前路径磁盘占用:du -h|grep "\./[^/]*$"
磁盘挂载:Linux磁盘挂载方法
系统资源、进程堆栈查看:top
查看指定进程:top -Hp PID
只查看一次:top -n1
设置top视图
搜索进程:ps -ef |grep 关键字 或ps aux | grep 关键字
查看进程路径:ls -l /proc/$PID
查看进程下所有线程:pstack pid
查看进程的线程资源占用情况:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid或top -Hp PID
dump当前jvm堆栈(TID为16进制):jstack PID|grep TID -a30
进程持有文件句柄数:usr/sbin/lsof -n| grep 18901| awk '{print $9}'|sort|uniq -c|sort -nr|more
查看某端口使用情况:netstat -nap|grep 11211|awk '{print $6}'|sort|uniq -c|sort -nr|more
添加账户:useradd -d [path] -m [username]
修改自己或root修改其他用户密码:passwd [userName]
更改文件所有者 chown [-R] ownerName:groupName file或directory
更改文件权限 chmod 777 filename 二进制权限标记100读10写1执行,所以777分别代表所有者、所属用户组、其他用户权限;给定777表示授予所有用户全部权限
屏蔽文件权限 umask 000 filename 给定000表示授予全部权限
禁止用户登录:chsh -s $shell $user
查看IP:/sbin/ifconfig
查看安装的工具或服务:rpm -qa |grep $service_name
卸载工具或服务:rpm -e $service_name
查看端口使用情况:netstat –apn 或 netstat -lpnut
开启端口:iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT
关闭端口:iptables -A INPUT -p tcp --dport $PORT -j DROP、
iptables -A OUTPUT -p tcp --dport $PORT -j DROP
或关闭相应的应用程序
服务器访问网址:curl+url或wget+url;curl的参数较多
curl
一个利用URL规则在命令行下工作的文件传输工具。 curl 支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。 作为一款强力工具,curl支持包括HTTP、HTTPS、FTP等众多协议,还支持 GET、POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征,还可以做网页处理流程和数据检索自动化
默认GET请求:curl protocol://ip:port/url?args
执行POST请求:curl -d "key1=value1&key2=value2&key3=value3" protocol://ip:port/path
定义Header:curl -H "Content-Type:application/json" -X POST -d 'json data' URL
eg. curl -H "Content-Type:application/json" -X POST -d '{"user": "admin", "passwd":"12345678"}' "https://proxy.mimvp.com/login"
eg. curl -H "Content-Type:application/json" -d "{\"expires\":1588904402434,\"trial\":1,\"version\":20001}" "http://127.0.0.1:8187/service/company/subscription/application/update?companyID=174822224&applicationType=2"
更多用法参考:https://blog.csdn.net/ithomer/article/details/82156402
注:url最好用双引号包起来,避免错误解析
查看操作系统版本:`cat /proc/version`,前者可能不全,还可以通过`cat /etc/issue`或`cat /etc/redhat-release`进一步补充信息
查看CPU信息:`cat /proc/cpuinfo`
查看内存信息:`cat /proc/meminfo`
查看开启启动服务:
service --status-all
systemctl -a
设置开机启动服务:
/etc/rc.local(编辑“/etc/rc.local”,把启动程序的shell命令输入进去即可,注意要写绝对路径; 默认root账号启动。使用其他账号启动:su - admin -c '/bin/sh target_shell' )
设置crontab,通过定时模拟开机启动
chkconfig
将启动文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下
vim 启动文件,文件前面务必添加如下三行代码,否侧会提示chkconfig不支持
#!/bin/sh 告诉系统使用的shell,所以的shell脚本都是这样
#chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必
#description: http server(自己随便发挥)//两行都注释掉!!!,此行代码必
chkconfig --add 脚本文件名 操作后就已经添加了
其他参考资料:https://www.cnblogs.com/shengulong/p/6763688.html
(未测试过)将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本
设置定时任务:
crontab -e 分钟 小时 天 月 星期 shell命令所在位置,可以使用通配符表示不限制,可以使用,隔开多个时间点,重启该服务service cron reload
编辑/etc/crontab文件
常用工具:vim, lsof
查看安装的版本:cat /etc/shells或者ls /bin/*sh
自定义命令:alias,取消自定义命令unalias
转化进制d->h:printf "%x\n" 30834
输出字符MD5值:echo -n "123456" | md5sum| awk '{print $1}'
替换: sed -i "s#$old#$new#g" $target
trim:
sub(/^[[:blank:]]*/,"",变量) 是去掉变量左边的空白符
sub(/[[:blank:]]*$/,"",变量) 是去掉变量右边的空白符
gsub(/[[:blank:]]*/,"",变量) 是去掉变量中所有的空白符