[命令] Linux 命令 set (设置 Shell 里的位置变量或者 Shell 的执行方式)

内容一:set 命令的格式

1.1 设置 Shell 的位置变量的格式

# set <Value of the first position variable> <Value of the second location variable> ......

1.2 设置 Shell 的执行方式

# set <parameter>

或者:

# set <parameter> +o

或者:

# set <parameter> -o

(补充:+o 代表打开特殊属性,-o 代表结束特殊属性)

内容二: set 的常用参数

1) -a 将已修改的变量进行标记,为将其输出至环境变量做准备
2) -b 让被中止的后台进程立刻显示退出状态代码
3) -d 取消使用杂凑表记忆中使用过的指令
4) -e 若退出状态代码不为 0 (正常退出)则立即退出,并显示错误原因
5) -f 取消通配符
6) -h 默认自动记录函数位置
7) -k 让命令的参数为此命令的环境变量
8) -l 默认自动记录 for 循环变量名
9) -m 监视模式
10) -n 测试模式(只读取不执行)
11) -p 优先顺序模式
12) -P 让文件或目录代替符号链接
13) -t 让随后的命令执行后立即退出
14) -u 使用未定义的变量时显示错误信息
15) -v 显示输入值
16) -H shell 使用感叹号 “!” + 号码的方式调用 history 命令中的历史命令
17) -x 命令指向前先显示此命令的参数或变量

(补充:将以上参数前面的 – 换成 + 则会变成相反的效果)

[步骤] Linux rm 命令的监控

步骤一:将原来的 rm 命令进行备份

# cp /usr/bin/rm  /usr/bin/rm.original

步骤二:创建一个记录 rm 命令使用的脚本

# cat /usr/bin/rm
#!/bin/bash
log=/var/log/rm_command.log
echo "The $$ is calling rm command" >> $log
echo "The full command is $*" >> $log
echo
echo "now use this command to get more information: /bin/ps axwwo user,pid,ppid,%cpu,%mem,vsz,rss,stat,time,cmd" >>$log
/bin/ps axwwo user,pid,ppid,%cpu,%mem,vsz,rss,stat,time,cmd >>$log
/usr/bin/rm.original $*
echo "============================================================" >>$log

步骤三:给记录 rm 命令使用的脚本执行权限

# chmod 755 /usr/bin/rm.original

步骤四:下次使用 rm 命令后就可以监控 /var/log/rm_command.log 日志了

(步骤略)

[排错] 解决 Linux 执行命令时报错 “bash: $’\r’: command not found”

报错代码

bash: $'\r': command not found

分析

Windows 系统文件换行使用的换行符是 \r\n
Linux 系统文件换行使用的换行符是 \n
在 Windows 编辑的文本换行符可能就是 \r\n
要解决这个问题需要将换行符从 \r\n 换成 \n

解决方法

方法一:使用 dos2unix 转换文件换行符

1.1 安装 dos2unix 软件

# yum -y install dos2unix

1.2 使用 dos2unix 转换文件换行符

# dos2unix <file>

方法二:使用 vim 命令转换文件换行符

2.1 使用 vim 命令进入文件

# vim <file>

2.2 转换文件换行符

: set ff=unix

(注意:是在 vim 的末行模式下执行以上命令)

2.3 保存文件

: wq

(注意:是在 vim 的末行模式下执行以上命令)

[排错] 解决 Red Hat Satellite 客户端注册成功但是无法获取软件源

报错代码

# subscription-manager repos
This system has no repositories available through subscriptions.

解决方法

步骤一:确保 /etc/pki/product/69.pem 文件的存在,且权限和下面的一致

# ls -l /etc/pki/product/69.pem
-rw-r----- 1 root root 2159 Nov  5 17:36 /etc/pki/product/69.pem

步骤二:确保 /etc/pki/product-default/69.pem 文件的存在,且权限和下面的一致

# ls -l /etc/pki/product-default/69.pem
-rw-r----- 1 644 root 2159 Nov  5 17:36 /etc/pki/product-default/69.pem

步骤三:如果步骤一和步骤二中的文件不存在

3.1 可以从其他正常的客户端那里拷贝

(步骤略)

3.2 可以从以下网址里下载

https://access.redhat.com/labs/rhpc/

[步骤] Red Hat Satellite 客户端 UUID 的显示

步骤一:规划拓扑

1.1 服务器列表

Red Hat Satellite 服务端
Red Hat Satellite 客户端

1.2 服务器列表简介

Red Hat Satellite 客户端注册到 Red Hat Satellite 服务端获取软件和补丁

步骤二:获取 Red Hat Satellite 客户端的 UUID

(只在 Red Hat Satellite 客户端执行以下步骤)

# subscription-manager facts --list | grep -i UUID

步骤三:确认 Red Hat Satellite 客户端的 UUID 在服务端中出现

(只在 Red Hat Satellite 服务端执行以下步骤)

# cat /var/log/rhsm/rhsm.log | grep -i <client's UUID>

步骤四:显示 Red Hat Satellite 客户端在服务端中的具体信息

(只在 Red Hat Satellite 服务端执行以下步骤)

# vim /var/log/rhsm/rhsm.log

(补充:在 vim 中查找对应客户端的 UUID 并联系上下文进行显示)