首页 运维在线正文

Linux日常使用技巧集

geeklife 运维在线 2020-08-14 17:08:06 542 0

运维在线

作为技术人员,Linux 系统可以说是我们使用最多的操作系统,但我们可能并不是很了解它。在这里我将自己日常遇到的 Linux 使用技巧记录下来,方便以后查询使用。

常用命令

  • 统计 IP 连接数

$ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

操作系统

查看系统版本

在安装环境或者软件时,我们常常需要知道所在操作系统的版本信息,这里列举几种查看内核和发行版本信息的方法。

内核版本

  • uname命令

$ uname -a
Linux fhb-6.6 2.6.32-642.13.1.el6.i686
  • /proc/version文件

$ cat /proc/version 
Linux version 2.6.32-642.13.1.el6.i686

发行版本

  • lsb_release命令

$ lsb_release -a
LSB Version: :base-4.0-ia32:base-4.0-noarch:core-4.0-ia32
Distributor ID: CentOS
Release: 6.8
  • /etc/issue文件

$ cat /etc/redhat-release
CentOS release 6.8 (Final)

启用Swap分区

在遇到内存容量瓶颈时,我们就可以尝试启用 Swap 分区。使用文件(还可以磁盘分区)作为 Swap 分区时,具体步骤如下:

1、 创建 Swap 分区的文件

# bs*count为文件大小
$ dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2、 格式化为交换分区文件

$ mkswap /root/swapfile

3、 启用交换分区

$ swapon /root/swapfile

4、 开机自启用 Swap 分区

/etc/fstab文件中添加如下内容:

/root/swapfile swap swap defaults 0 0

最后,查看系统的 Swap 分区信息:

$ free -h
      total   used    free   shared  buff/cache   available
Mem:   1.7G    729M    252M   9.2M    714M         763M
Swap:  1.0G    0B      1.0G

免密码使用sudo

以下两种需求:

  1. 开发中经常会使用到 sudo 命令,为了避免频繁输入密码的麻烦;

  2. 脚本中使用到 sudo 命令,怎么输入密码?;

这些,都可以通过将用户加入 sudoers 来解决,当然情况 2 也可以使用echo "passwd"|sudo -S cmd,从标准输入读取密码。

sudoers 配置文件为/etc/sudoers,sudo 命令操作权限配置内容如下:

# 授权用户/组    主机名=(允许转换至的用户)   NOPASSWD:命令动作
root ALL=(ALL) ALL

授权格式 说明:

  • 第一个字段为授权用户或组,例如 root;

  • 第二个字段为来源,() 中为允许转换至的用户,= 左边为主机名;

  • 第三个字段为命令动作,多个命令以,号分割;

因此,我的用户为fhb,授权步骤如下:

# 1. 执行visudo命令,操作的文件就是/etc/sudoers
$ sudo visudo
# 2. 追加内容
fhb ALL=(root) NOPASSWD: /usr/sbin/service,/usr/local/php/bin/php,/usr/bin/vim
# 3. Ctrl+O保存并按Enter

然后,使用sudo service ssh restart命令测试 OK。

Yum更新排除指定软件

有时候我们使用 yum 安装的软件,由于配置向后兼容性等问题,我们并不希望这些软件(filebeat 和 logstash)在使用update时,被不经意间被自动更新。这时,可以使用如下方法解决:

  • 临时

通过-x--exclude参数指定需要排除的包名称,多个包名称使用空格分隔。例如:

# --exclude同样
$ yum -x filebeat logstash update
  • 永久

在 yum 配置文件/etc/yum.conf中,追加exclude配置项。例如:

# 需排序的包名称
exclude=filebeat logstash

再次使用yum update命令,就不会自动更新指定的软件包了。

$ yum update
No Packages marked for Update

ssh

强制踢出其他登录用户

在某些情况下,需要强制踢出系统其他登录用户,比如遇到非法用户登录。查询当前登陆用户:

# 当前用户
$ whoami
root
# 当前所有用户
$ ps -ef | grep 'pts'
root      4752  4727  0 00:09 pts/0    00:00:00 su www
www       4755  4752  0 00:09 pts/0    00:00:00 bash

剔除非法登陆用户:

$ kill -9 4755

更多详细说明,见 Linux 强制踢出其他登录用户。

建立隧道实现端口转发

在可以使用 ssh 情况下,为了能进行线上调试,我们可以使用 ssh 隧道建立端口映射。

例如,线上远程目标机器 ip:10.1.1.123、端口:3303;映射到本地 33031 端口。命令如下:

# [主机ip]:[端口]:[主机ip]:[远程目标机器端口] [远程目标机器ip]
ssh -L 127.0.0.1:33031:127.0.0.1:3303 10.1.1.123

该命令操作后,只能通过127.0.0.1访问。若想全网段访问,需要将第一个主机 ip 更改为0.0.0.0,同时需要在/etc/ssh/sshd_config增加GatewayPorts yes的配置项。

常用工具

Strace调试

在调试程序时,我们会遇到一些系统层面的错误问题,一般都不易发现,这时可以使用 strace 来跟踪系统调用的过程,方便快速定位和解决问题。

$ strace crontab.sh
execve("./crontab.sh", ["./crontab.sh"], [/* 29 vars */]) = 0
brk(0)                                  = 0x106a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0434160000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=53434, ...}) = 0
mmap(NULL, 53434, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f0434152000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
... ...

更多详细说明,见 错误调试。

彩色的命令行

在脚本或者代码中,有时候需要在控制终端输出醒目的提示信息,以便引起我们的关注。其实,在 Linux 终端下很容易就能搞定,如下:

实现的源代码,内容为:

echo -e "\033[1;30m Hello World. \033[0m [高亮]"
echo -e "\033[0;31m Hello World. \033[0m [关闭属性]"
echo -e "\033[4;32m Hello World. \033[0m [下划线]"
echo -e "\033[5;33m Hello World. \033[0m [闪烁]"
echo -e "\033[7;34m Hello World. \033[0m [反显]"
echo -e "\033[8;35m Hello World. \033[0m [消隐]"
echo -e "\033[0;36;40m Hello World."
echo -e "\033[0;37;41m Hello World."

\033是 Esc 键对应的 ASCII 码(27=/033=0x1B),表示后面的内容具有特殊含义,类似表述有^[以及/e,而\033[0m表示清除格式控制。

输出格式的规则,可表示为\033[特殊格式;前景色;背景色m,主要分为 颜色 和 格式 两类规则。

  • 颜色

主要包括 前景色 和 背景色,前景色范围为30~39,背景色范围为40~49(前景色对应颜色值 +10)。前景色颜色代码表如下:

黑 = “\033[30m”
红 = “\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消隐


打赏

评论

关于我们
极客生活(www.geeklife.top),发现更大精彩世界!
我们成立于2016年09月,我们是一群对网络充满向往的新时代有志青年。开发是一种不畏艰险的旅程,年对问题我们拥有无数种算法,但是依旧寻找不到内心的答案。极客,创造无限可能!
关注本站微信号,享受更多服务!
联系方式
QQ:3204657413
地址:中国·山东省日照市烟台北路16号
Email:cnsoft@88.com
邮编:276826
CopyRight 2016 - 现在 极客生活 SomeRights 鲁ICP备17005113号 鲁公网安备 37110302000140号萌ICP备20210056号  | 本站托管于阿里云 | 由又拍云中国科学院提供云存储服务| 由奇安信网站卫士提供云防护服务