Linux系统知识讲解之二

(1)因为是root用户,就不能使用sudo了。如果不是root用户,才可以使用sudo。

(2)通常使用shell去运行脚本,两种方法 bash xxx.sh,另外一种就是bash -c “cmd string”

对于bash xxx.sh, 首先bash 会在当前目录去寻找xxx.sh,如果找到,就直接运行,找不到则按照环境变量PATH的指定路径,按顺序去找,如果找到,则执行,找不到则报错。  

bash -c的命令常用语#!/bin/sh开头的脚本  

(3)sudo 命令为什么需要密码?通过远程ssh调用sudo提示权限不够(Permission denied)  

比如ssh sff@192.168.20.129 ‘sudo “echo “123” >> /etc/rc.local”’  

bash返回 /etc/rc.local: Permission denied  

这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 命令也具有root 权限,所以 bash会认为这个命令没有写入信息的权限。  

解决:使用bash -c参数  

ssh sff@192.168.20.129 ‘sudo bash -c “echo “123” >> /etc/rc.local”’  

(4)打印文本第二行第一列 :sed -n “2, 1p” filename | awk ‘{print PATH的指定路径,按顺序去找,如果找到,则执行,找不到则报错。  bash -c的命令常用语#!/bin/sh开头的脚本  (3)sudo 命令为什么需要密码?通过远程ssh调用sudo提示权限不够(Permission denied)  比如ssh sff@192.168.20.129 ‘sudo “echo “123” >> /etc/rc.local”’  bash返回 /etc/rc.local: Permission denied  这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 命令也具有root 权限,所以 bash会认为这个命令没有写入信息的权限。  解决:使用bash -c参数  ssh sff@192.168.20.129 ‘sudo bash -c “echo “123” >> /etc/rc.local”’  (4)打印文本第二行第一列 :sed -n “2, 1p” filename | awk ‘{print 1}’

(5)查看日志的主要操作及命令。

(6)目录间的切换

示例:

当前目录是:hadoop-2.6.4/bin,想切换到hadoop-2.6.4/sbin。可以使用如下命令:

[root@littlelawson hadoop-2.6.4]# cd bin
[root@littlelawson bin]# ../sbin/start-all.sh

(7)centos 7更换了服务的启动方式

systemctl enable sssd
systemctl start sssd
systemctl status sssd

比如说centos 7中关闭防火墙:systemctl stop firewalld

cetnos 7永久关闭防火墙:chkconfig iptables off

(8)vi基本命令

命令模式下,字母u:撤销上一步的操作

(9)shell脚本

使用如下命令检查是否有语法错误:sh -n test.sh

调试脚本程序:sh -x test.sh

(10)报错信息:“已加载插件:fastestmirror”多是网络出现了问题。

(11)centos 7中修改主机名

hostnamectl set-hostname [NewHostName]

如果主机众多,可以使用如下脚本

#!/bin/bash
for HOST in `cat hosts`;do
ssh -t root@$HOST "sudo echo $NEWNAME > /etc/hostname"
done