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