我作为开发人员在日常工作中使用的 Linux 命令和技巧
端口转发
在 VIM 中编辑文件时不使用sudo
,但使用sudo
转到终端中的行首/行末
二
执行你过去执行过的命令
同意一切
在后台运行一个持久进程并关闭终端
检查谁偷走了你最喜欢的端口
阅读日志
排序过程
每 X 秒执行一次命令
安静模式
为 crontab 执行的脚本创建日志文件
这篇文章并非该命令系列文章中的一篇cd
,只是我几乎每天都在使用的一些命令和技巧的列表。
端口转发
有时我需要连接数据库,当然我更喜欢使用我的 GUI 管理器(JetBrains DataGrip)。
所以,如果你的公司有安全策略,并且你的数据库端口没有暴露,你可以执行
ssh -L{port on your PC}:localhost:{database's port} root@{server IP}
以下命令将打开3308
笔记本电脑上的端口,所有内容将转发到192.168.1.2:3306
ssh -L3308:localhost:3306 root@192.168.1.2
localhost
表示数据库正在监听192.168.1.2
。例如,您可以输入以下内容192.168.3.77
,所有内容将通过 转发到.3.77
服务器.1.2
。
在 VIM 中编辑文件时不使用sudo
,但使用sudo
你有没有遇到过编辑配置文件后又忘记修改的情况sudo
?我也是……不过有个小技巧可以保存,在 VIM 中输入:
:w !sudo tee %
转到终端中的行首/行末
如果您在终端中输入了一条很长的命令,可能需要很长时间才能返回到行首添加缺失的sudo
。然后再返回到行尾添加一些参数。
按 即可在终端中crtl + a
移动到行首和crtl + e
行尾。
二
一年中ll
只需输入 即可节省几天时间ls -la
。适用于大多数 Linux 服务器。
执行你过去执行过的命令
最后一个命令
要重新执行上一个命令,当然可以按 ↑ 键(向上箭头)。但你也可以输入!!
。因此,以 root 身份执行上一个命令非常容易。
sudo !!
apt
要运行以下列类型开头的最后一个命令!apt
搜索历史
/tmp
要查找包含您过去执行过的命令,请按ctrl + r
并输入/tmp
。ctrl + r
再次按 可显示下一个结果。
要显示所有命令或使用正则表达式搜索,请使用
history | grep "/tmp"
同意一切
要对每个问题回答“是”,您可以使用名为yes
yes | yum install curl
用yes no
来说“不”并丢弃。
警告
正如@patricnox在评论中提到的那样,使用yes
可能会造成意想不到的后果。你可能会意外地安装10GB的依赖项或其他你不想做的事情。
在后台运行一个持久进程并关闭终端
如果你运行一个将在 3 天内结束的脚本,则无需等待终端窗口打开才能结束。你可以使用nohup
命令
nohup wget http://large-files.com/10gb-super-movie.avi &
wget
在后台工作,输出保存到nohup.out
工作目录中的文件中。
检查谁偷走了你最喜欢的端口
当你试图运行 nginx 却因为 Apache 进程正在运行且 443 端口繁忙而无法运行的时候,这真的很烦人。
那么,如何确定哪个进程正在监听 80 端口呢?
$ netstat -tulpn | grep 80
tcp6 0 0 :::80 :::* LISTEN 10177/java
10177
是您要查找的 pid。现在执行
ps aux | grep 10177
了解更多详情。
阅读日志
大家都知道这less
是一种读取日志文件的好方法。但你也可以直接读取 gzip 压缩的日志,无需解压!
less /var/log/my-app/my-app.log.2015.12.14.gz
现场朗读
tail -f /var/log/my-app/my-app.log | grep ERROR
上述命令将仅显示包含 的新行ERROR
。
排序过程
按 CPU 使用率排序显示前 3 个进程
ps aux --sort=-pcpu | head -n 4
按内存使用量排序显示前 3 个进程
ps aux --sort=-rss | head -n 4
每 X 秒执行一次命令
要每隔 X 秒打印一次命令的输出,可以使用watch
命令。例如,创建时钟运行
watch -n 1 date
安静模式
许多标准命令都具有静默模式。在创建 Bash 脚本时非常有用。大多数情况下,只需添加-q
或 即可-s
(请参阅--help
或man
,或在 StackOverflow 上查看)。
zip -q archive.zip big-file.jpg
但有时(实际上总是使用内部脚本)您必须忽略输出(发送到/dev/null
)
./very-verbose.sh 1>/dev/null
为 crontab 执行的脚本创建日志文件
0 22 * * 1-5 /opt/scripts/send-report.sh 2>/var/log/scripts/report-error.log
所以下次当你的脚本失败时你不会失去理由
文章来源:https://dev.to/mateuszjarzyna/linux-s-commands-and-tricks-im-using-in-my-daily-job-as-a-developer-4cle