有sudo权限的用户不输root密码下切换到root用户下
sudo -i # 以目标用户身份运行一个登录 shell;可同时指定一条命令
或
sudo -s # 以目标用户运行 shell;可同时指定一条命令
或
sudo su
在不知道别人账户密码时切换到别人的账户
sudo su xxx
查询记录为abcdefg在service.log的情况
cat service.log | grep abcdefg
想查出对应行号,加上-n就行了
cat -n service.log | grep abcdefg
隐藏bash命令,不被history记录
命令set +o history表示接下来的命令不会记录会history里面,但set +o history这条命令会记录。先用set +o history再配合用vim ~/.bash_history删除不记录的命令
命令history +c会删除当前shell中已记录到history里面的记录,如果优化了history(检查/etc/bashrc中有无history相关内容),即记录了命令的执行时间,该命令可能无效。配合用vim ~/.bash_history删除不记录的命令,然后用history +c可消除你不想被记录的痕迹
#查询110到120行的情况
sed -n "110,120p" service.log
cat -n service.log | tail -n +110 | head -n 20
【一】从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000
【二】显示3000~3999行
cat filename |head -n 3999 | tail -n +3000
压缩文件查看内容
zcat agent.log.gz | grep -a Exception -C 10
#如果关键字太多,可以用more或less
cat service.log | grep xxx | more
# less命令查看大文件
less +G -n filename (+G跳到文件最后一行,-n不显示行号,-N显示行号,-m显示百分比)如果有最新内容也能看到时
使用 less file-name 打开日志文件,执行命令 F,可以实现类似 tail -f 的效果
less命令打开文件后如果想编辑,按v可进入默认编辑器
less命令跳到指定行如100行,则按100g
less搜索时忽略大小时输入-i
less允许你在任何一行中添加标记。你可以在字母后面按下“m”键来加一个记号。
ma
当你想回到这个标记时,只需输入以下命令: 'a
#将查询结果输出到日志
cat service.log | grep xxx > /home/shuangyueliao/tmp
#统计多少行
cat service.log | wc -l
#查询所有tcp、udp端口
#l:listening n:num t:tcp u:udp p:display PID/Program name for sockets
netstat -lntup
查找目录下的所有文件中是否含有某个字符串
# grep -r递归查找,-n输出匹配的行号,-i不区分大小写,如果最后面再加上-l则表示只打印出文件名
find .|xargs grep -rni "要查找的字符串"
或
grep -rni "要查找的字符串“ * # *表示当前目录所有文件,也可以是某个文件名
# git查询log树
git log --oneline --graph --decorate --all
# 查找当前目录下的某文件名
find . -name "hello.txt"
# 查找当前层级下包含hello字符串的文件名
find . -maxdepth 1 -name "*hello*"
# 列出所有文件
find .
# find并执行命令
find -type f -mtime -1 -exec rm {} ;
# find并执行命令前询问
find -name "*.log" -type f -mtime -1 -ok rm {} ;
# 查询当前目录下大于50M且名称以.jar结尾的文件,按时间从大到小排序,取前20条
find . -size +50M -name "*.jar" | xargs ls -lt | head -n 20
# 通过进程名查看端口占用的两种方式
lsof -i -P|grep tomcat
netstat -nap|grep tomcat
mysql数据库定时备份
1、创建脚本文件mysqlbackup.sh,内容如下
backupdir=/home/jiepeng/mysqlbackup
time=` date +%Y%m%d%H `
/usr/local/mysql/bin/mysqldump -u 数据库用户名 -p数据库密码 数据库名 | gzip > $backupdir/smartheadsetv2$time.sql.gz
find /home/jiepeng/mysqlbackup/ -mtime +7 -name *.sql.gz -exec rm -rf {} ;
2、crontab -e添加如下一行,表示每天2点执行上方创建的脚本,后面是脚本存放的位置
0 2 * * * /home/jiepeng/mysqlbackup.sh
docker常用命令
# 查看docker所有镜像
docker images
# 列出docker运行中的容器
docker ps
# 列出docker所有容器
docker ps -a
# docker以交互模式启动镜像容器并运行脚本java -jar /opt/arthas/arthas-demo.jar,-i是交互模式的意思,-t是启动一个伪终端并绑定到标准输出中
docker run --name arthas-demo -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/arthas-demo.jar"
# docker运行在后台
docker run -itd --name ubuntu-test ubuntu /bin/bash
# 使用attach进入容器内部,注意如果从容器退出,会导致容器的停止
docker attach 1e560fca3906
# docker以交互方式进入容器,并运行脚本java -jar ...
docker exec -it arthas-demo /bin/sh -c "java -jar /opt/arthas/arthas-boot.jar"
# docker启动已容器
docker start arthas-demo
# 查看docker容器日志文件
docker logs -f container_name
可用内存=free的内存+cached内存+buffers
cat /tmp/myfile | grep "mystring" which would run much faster as: grep "mystring" /tmp/myfile
命令行的艺术the-art-of-command-line/README-zh.md at master · jlevy/the-art-of-command-line · GitHub
Bash操作:
ctrl-r: 搜索命令行历史记录/ctrl-s:反方向搜索(stty -ixon 屏蔽终端的Ctrl + S快捷键)
ctrl-s:暂停终端
ctrl-q:解除终端暂停状态
ctrl-w: 删除你键入的最后一个单词(emacs: M-<DEL> 移除光标前一个词 M-d 移除光标后一个单词)
ctrl-u/ctrl-k: 删除行内光标所在位置之前内容/之后内容
ctrl-l: 清屏
alt-b/alt-f: 以单词移动光标
ctrl-a/ctrl-e: 将光标移至行首/行尾
ctrl-c: 取消命令
alt-.: 循环移向前一个参数
alt-#:注解当前command
set -o vi/set -o emacs:切到vi风格/切回原来风格
!n(n是命令编号): 再次执行
!$: 上次键入的参数
!!: 上次键入的命令
ssh中使用-L或-D(偶尔需要用-R): 开启隧道,如需要从一台远程服务器上访问web页面
curl -I: 测试响应头和响应码
ctrl-d:无command输入时,关闭终端
emacs命令
C-h t 查看内置教程(常用)
C-h k xxx 寻找快捷键的帮助信息(常用)
C-h a xxx 相关命令搜索(常用)
C-h f xxx 查看函数说明
C-h v xxx 查看变量说明
C-h c xxx 查看命令说明
C-h ?
C-h m 查看当前主模式的文档
C-x C-c 退出emacs
C-g 退出一个正在运行的命令
C-v 向前移动一屏
M-v 向后移动一屏
C-l 重绘屏幕,并将光标移动到中间、顶端、底部
C-p 上一行
C-n 下一行
C-b 向左移动
C-f 向右移动
M-f 向前移动一个单词
M-b 向后移动一个单词
C-a 移动到行首
C-e 移动到行尾
M-a 移动到句首
M-e 移动到句尾
M-< 移动到最顶端
M-> 移动到最底部
C-u(META) 8 C-f 向前移动8个字符
C-u(META) 8 C-v 向下滚动8行
C-u 8 * 这将会插入********
C-u 2 C-k 会所多行连同其后的换行符一起移除,而不仅仅是重复C-k
C-g 取消命令
C-x 1 只保留一个窗格
C-d 删除光标后一个字符
M-<DEL> 移除光标前一个词
M-d 移除光标后一个单词
C-k 移除从光标到"行尾"间的字符
M-k 移除从光标到“句尾”间的字符
C-<SPC>或C-@选中要移除的内容,然后按下C-w,这样就可把位于这两点之间的所有文字移除
C-y 插入你最后移除的文字,如果紧接着按M-y可召回前几次移除的内容
C-/或C-x u 撤销命令
C-x C-f 寻找一个文件
C-x C-s 存储文件
C-x C-b 列出缓冲区
C-x b xxx 回到某个缓冲区
C-x s 保存多个缓冲区
C-x 2 上下划分两个窗格
C-x 3 左右划分两个窗格
C-x o 将光标转移到其它窗格
C-M v 将另一窗格向下移动
C-Shift-M v 将另一窗格向上移动
C-x 4 C-f 将文件在另一个窗格打开
M-x make-frame 创建一个窗口
M-x delete-frame 删除一个窗口
C-z 挂起
M+w 复制
(setq make-backup-files nil) 关闭备份文件(原文件名加上~)临时关闭备份文件M-x customize-variable <Return> make-backup-files <Return>
M-x replace-string<Return>changed<Return>altered<Return> 替换光标后面的内容
M-x recover file <Return> 来恢复你的自动保存文件
M-q 手动执行
C-s 向前搜索
C-r 向后搜索
显示行号 (global-linum-mode t)添加到.emacs文件中 或 M-x global-linum-mode(临时)
跳转指定行M-g g 或者 M-g M-g或M-x goto-line
注释多行 选中一段区域开头位置到最后一行行首(!很重要!);按 C-x r t ;输入注释内容;
取消注释 选中一段区域开头位置到最后一行,紧挨着注释字符之后的位置(!很重要!);按 c-x r k;
执行 C-g 然后 C-x u 就是向前撤销了
.emacs文件
(global-linum-mode t)
(setq make-backup-files nil)
spacemacs
C-x C-f 打开文件
SPC f e d 打开.spacemacs
SPC f e R 修改.spacemacs后重新初始化
SPC f s 保存一个buffer
SPC f R 重命名当前文件
SPC f L helm-locate查找文件
SPC f S 保存所有buffer
SPC f r 最近打开的文件列表
SPC p f 查找项目文件
SPC f T/t 调出neoTree或隐藏
spc-spc-helm-imenu 查看单个文件结构大纲
SPC 0 光标跳转到侧边栏中(neoTree中)
SPC n 光标跳转到第n个buffer中
SPC w m 最大化buffer
SPC w c buffer居中模式
SPC w d 删除窗口
SPC w - 下分割窗口
SPC w / 右分割窗口
SPC w + 窗口布局切换
SPC w H evil模式下,光标移动到最左边窗口
SPC t f 显示填充列
SPC T M 切换帧最大化
SPC / 全项目搜索
SPC f g 搜索相关函数
SPC t m m minor mode指示器开启关闭
SPC j = 自动对齐
SPC b n 下一个buffer
SPC b N 新建一个buffer
SPC b P 拷贝剪切版内容覆盖整体buffer
SPC b d 删除buffer
SPC b m 删除其它buffer
SPC b W buffer列表
SPC b b 列出所有buffer的hemi-mini
SPC b k 关闭当前buffer
SPC tab 两个buffer切换
CTRL j,h,k,l pattern上下移动
SPC ! shell终端
SPC s s 搜索文件中内容
在根项目中touch .projectile就会认为是一个spacemacs项目或者如果有.git项目也会认为是一个.projectile
通过子shell返回当前目录
运行完一 个命令后自动返回当前位置,加括号即可。如(cd /etc && ls -a)该命令执行完后,当前目录不会改变
rsync --progress -av 或 rsync --progress -avz或rsnyc --progress -avW或rsync -avP可代替scp
启动一个http服务
python -m http.server 8081
1、mysql忘记密码,修改mysql的配置文件,在[mysqld]下面加上skip-grant-tables,重启mysql即可免密登录
2、mysql crash recovery:
在[mysqld]加入innodb_force_recovery = 6,重启mysql,dump出sql脚本,重置mysql,再导入sql脚本
innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。
当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。
1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页
2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash
3(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。
4(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。
6(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。
mysql死锁解决方法:
方法1:进入mysql命令行界面,show full processlist找出死锁的进程,然后kill Id
方法2:如果方法1看不出哪个线程死锁,执行语句
SELECT * FROM `information_schema`.`innodb_trx` ORDER BY `trx_started`
then take the value from trx_mysql_thread_id and send it the KILL command
kill trx_mysql_thread_id
-L 本地网卡地址:本地端口:目标地址:目标端口(-L选项中的本地网卡地址是可以省略的)
在本地主机A1登陆远程云主机B1,并进行本地端口转发,访问localhost:2000=1.2.3.4:3000
ssh -L localhost:2000:localhost:3000 root@1.2.3.4
-L选项中的目标地址也可以是其他主机的地址,访问localhost:2000=通过192.168.4.56访问192.168.4.10:3000
ssh -L localhost:2000:192.168.4.10:3000 jiepeng@192.168.4.56
-R 远程网卡地址:远程端口:目标地址:目标端口
场景1:ssh通过跳板机连到内网
lab$ ssh -R 10022:localhost:22 jumpbox
jumpbox$ ssh user@localhost -p 10022
lab$
或
修改vim /etc/ssh/sshd_config
添加GatewayPorts yes
service sshd restart
lab$ ssh -R 0.0.0.0:10022:localhost:22 jumpbox
other-machine$ ssh user@jumpbox -p 10022
场景2:
比方说在本地的127.0.0.1:1080运行了HTTP代理服务,现在我想让另一台机子 remote 也能够使用这个HTTP代理
local$ ssh -NRf 11080:localhost:1080 remote
local$ ssh remote
remote$ export http_proxy=http://127.0.0.1:11080/
remote$ export https_proxy=http://127.0.0.1:11080/
remote$ curl cip.cc
场景3:
要是想要在家访问公司内网的一些网站,但是公司又没有提供进入内网的VPN,那怎么办呢?通过 ssh -D 可以在本地建立起一个 SOCKS5 代理:
local$ ssh -ND 1080 workplace
如果 workplace 处在内网,不要忘记前面讲到可以用反向端口转发和跳板机来解决这个问题。现在,你可以在浏览器的设置里面,把代理服务器设成 socks5://127.0.0.1:1080,然后你就可以看到 workplace 能看到的所有网站啦。
window查询被占用端口:
netstat -aon|findstr "49157" # 记下pid
tasklist|findstr "2720" # 查询pid为2720对应的应用
taskkill /f /t /im Tencentdl.exe 或 taskkill /pid 4136 -t -f # 杀死进程
相关知识
Linux内字符串无法显示原因解析 (linux字符串不显示) – 后浪云
linux 绘画
linux输出第一列数据库
那些年曾经看过的书——工作篇
19 个如此好玩有趣的 Linux 命令,你玩过几个呢?
视频教程
计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)
命令行的艺术
排烟通风图例大全图片
命令行的艺术 (GitHub 星标 6 万多)
网址: linux系统常用命令大全 https://m.huajiangbk.com/newsview105144.html
上一篇: b |
下一篇: 如何设计一个支撑数亿用户的系统 |