作为技术人员,Linux 系统可以说是我们使用最多的操作系统,但我们可能并不是很了解它。在这里我将自己日常遇到的 Linux 使用技巧记录下来,方便以后查询使用。
常用命令
- 统计 IP 连接数
$ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10 |
操作系统
查看系统版本
在安装环境或者软件时,我们常常需要知道所在操作系统的版本信息,这里列举几种查看内核和发行版本信息的方法,更多见 查看 Linux 系统版本。
内核版本
- uname命令
$ uname -a |
- /proc/version文件
$ cat /proc/version |
发行版本
- lsb_release命令
$ lsb_release -a |
- /etc/issue文件
$ cat /etc/redhat-release |
启用Swap分区
在遇到内存容量瓶颈时,我们就可以尝试启用 Swap 分区。使用文件(还可以磁盘分区)作为 Swap 分区时,具体步骤如下:
1、 创建 Swap 分区的文件
# bs*count为文件大小 |
2、 格式化为交换分区文件
$ mkswap /root/swapfile |
3、 启用交换分区
$ swapon /root/swapfile |
4、 开机自启用 Swap 分区
在/etc/fstab
文件中添加如下内容:
/root/swapfile swap swap defaults 0 0 |
最后,查看系统的 Swap 分区信息:
$ free -h |
免密码使用sudo
以下两种需求:
- 开发中经常会使用到 sudo 命令,为了避免频繁输入密码的麻烦;
- 脚本中使用到 sudo 命令,怎么输入密码?;
这些,都可以通过将用户加入 sudoers 来解决,当然情况 2 也可以使用echo "passwd"|sudo -S cmd
,从标准输入读取密码。
sudoers 配置文件为/etc/sudoers
,sudo 命令操作权限配置内容如下:
# 授权用户/组 主机名=(允许转换至的用户) NOPASSWD:命令动作 |
授权格式 说明:
- 第一个字段为授权用户或组,例如 root;
- 第二个字段为来源,() 中为允许转换至的用户,= 左边为主机名;
- 第三个字段为命令动作,多个命令以
,
号分割;
因此,我的用户为fhb
,授权步骤如下:
# 1. 执行visudo命令,操作的文件就是/etc/sudoers |
然后,使用sudo service ssh restart
命令测试 OK。
Yum更新排除指定软件
有时候我们使用 yum 安装的软件,由于配置向后兼容性等问题,我们并不希望这些软件(filebeat 和 logstash)在使用update
时,被不经意间被自动更新。这时,可以使用如下方法解决:
- 临时
通过-x
或--exclude
参数指定需要排除的包名称,多个包名称使用空格分隔。例如:
# --exclude同样 |
- 永久
在 yum 配置文件/etc/yum.conf
中,追加exclude
配置项。例如:
# 需排序的包名称 |
再次使用yum update
命令,就不会自动更新指定的软件包了。
$ yum update |
ssh
强制踢出其他登录用户
在某些情况下,需要强制踢出系统其他登录用户,比如遇到非法用户登录。查询当前登陆用户:
# 当前用户 |
剔除非法登陆用户:
$ kill -9 4755 |
更多详细说明,见 Linux 强制踢出其他登录用户。
建立隧道实现端口转发
在可以使用 ssh 情况下,为了能进行线上调试,我们可以使用 ssh 隧道建立端口映射。
例如,线上远程目标机器 ip:10.1.1.123、端口:3303;映射到本地 33031 端口。命令如下:
# [主机ip]:[端口]:[主机ip]:[远程目标机器端口] [远程目标机器ip] |
该命令操作后,只能通过
127.0.0.1
访问。若想全网段访问,需要将第一个主机 ip 更改为0.0.0.0
,同时需要在/etc/ssh/sshd_config
增加GatewayPorts yes
的配置项。
常用工具
Strace调试
在调试程序时,我们会遇到一些系统层面的错误问题,一般都不易发现,这时可以使用 strace 来跟踪系统调用的过程,方便快速定位和解决问题。
$ strace crontab.sh |
更多详细说明,见 错误调试。
彩色的命令行
在脚本或者代码中,有时候需要在控制终端输出醒目的提示信息,以便引起我们的关注。其实,在 Linux 终端下很容易就能搞定,如下:
实现的源代码,内容为:
echo -e "\033[1;30m Hello World. \033[0m [高亮]" |
\033
是 Esc 键对应的 ASCII 码(27=/033=0x1B),表示后面的内容具有特殊含义,类似表述有^[
以及/e
,而\033[0m
表示清除格式控制。
输出格式的规则,可表示为\033[特殊格式;前景色;背景色m
,主要分为 颜色 和 格式 两类规则。
- 颜色
主要包括 前景色 和 背景色,前景色范围为30~39
,背景色范围为40~49
(前景色对应颜色值 +10)。前景色颜色代码表如下:
红 = “\033[31m”
绿 = “\033[32m”
黄 = “\033[33m”
蓝 = “\033[34m”
紫 = “\033[35m”
青 = “\033[36m”
白 = “\033[37m”
- 格式
表达式 | 格式 |
---|---|
\033[0m | 关闭所有属性 |
\033[1m | 高亮度 |
\033[4m | 下划线 |
\033[5m | 闪烁 |
\033[7m | 反显 |
\033[8m | 消隐 |
转载:樊浩柏科学院