linux自动巡检脚本之用户切换后的命令执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux自动巡检脚本之用户切换后的命令执行相关的知识,希望对你有一定的参考价值。

进系统后先用root用户巡检一些项目,再切换到其他用户巡检,把所有巡检结果写到一个文件里。
我现在遇到的问题是:切换到其他用户后脚本就不执行了。
这该怎么处理啊?

权限不够
1、你看下你的脚本有没有读和执行的权限,用一下命令查看:
ls -trl /home/aaaaa/test.sh
看看出来的 -rw-r--r--. 1 root root 28757 12月 12 09:28 install.log 具体是什么
就像我上卖弄读取出来的这个 install.log 文件一样,他的权限是 对root用户 有读和修改的权限,对root用户组只有 读 的权限,对其他用户也只有读的权限,那么这个时候 你用其他用户执行,肯定执行不了;

2、看看切换的用户有没有读和执行该脚本的权限;

关于权限这边说就太了多了,如果不懂的话建议自己下去看看;
有个最简单的方法 直接 chmod 777 aaaa.sh 给予aaaa.sh这个脚本所有权限,然后再切换用户后,就可以直接执行了 bash aaaa.sh
参考技术A 切换的时候直接写上要执行的巡检脚本 并把结果发送的脚本一起写上
例如:su - aaaa -s /bin/bash shell.sh
切到aaaa用户用bash环境执行shell.sh脚本
其他自由发挥吧本回答被提问者采纳
参考技术B 检查对应用户的环境变量是否足够脚本的执行 参考技术C 你怎么切换的 权限够不

linux无法切换 ORACLE用户的是啥原因的,其他用户都OK

尝试修改/etc/security/limits.conf 文件数限制, 无法解决
UPDATE:
最后解决了,为了给以后碰到此问题的朋友提供一条思路,描述一下解决思路,最后定位,在CRONTAB中,被ORACLE加了一条PTY 虚拟终端的定时任务,不停执行,估计系统扫到了这个问题,在BASHRC(交互引用脚本)文件中被自动加了一个EXIT命令,导致,一旦切换就会自动退出,删除掉这条命令,改为
# .bashrc# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfi# Uncomment the following line if you don't like systemctl's auto-paging feature:# export SYSTEMD_PAGER=# User specific aliases and functions

修改/etc/security/limits.conf
vi /etc/security/limits.conf

将* soft nofile 1024
* hard nofile 8192

修改为
* soft nofile 2048
* hard nofile 8192
修改后,用ulimit -Hn和ulimit -Sn确认修改已生效。
又试了一下
su - oracle追问

已经尝试,非这个原因

参考技术A 应该切过去了,只是提示符设置问题
su - oracle
用id 命令看看当前用户
set | grep PS1
看看提示符追问

我不是很明白,这个是什么意思

追答

su后id命令显示什么?难道你把oracle用户的UID设成了0

追问

没有的

参考技术B 是否是进程数占满了呢,max user processes?追问

我修改了这个文件,但是并没有起作用,我不确认是不是这个原因,因为别的用户 又可以正常切换

追答

把这段配置加到/etc/security/limits.conf最下面试试呢:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 65536
oracle hard nproc 65536
oracle soft stack 65536
oracle hard stack 65536

追问

多位答主提供的方式都没有解决问题,还是很感谢各位,这条回答第一个回答,就采纳了,但是最终解决的办法不是答主描述的,解决方法update到了提问里

本回答被提问者采纳

以上是关于linux自动巡检脚本之用户切换后的命令执行的主要内容,如果未能解决你的问题,请参考以下文章

linux 中如何执行脚本?

linux 中如何执行脚本?

linux上自动执行oracle

linux 用户退出怎么命令

linux 用户退出怎么命令

Linux 定时执行shell脚本命令之crontab