`
can_do
  • 浏览: 248751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux以非root用户远程执行shell命令注意点

阅读更多
1、远程执行前提
在目标主机当前执行用户文件.bashrc配置要执行命令的环境变量,类似/etc/profile下的配置

注意:如果一些命令是全局安装的,则不用在环境变量中配置
/home/deploy_user/.bashrc
/////////begin/////////
export JAVA_HOME=/usr/local/yourdir/tools/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

export LANG=zh_CN.UTF-8
/////////end///////////


2、远程执行命令
ssh deploy_user@10.114.3.12 "/home/deploy_user/deploy_sh/deploy_8091.sh"

3、目标主机上脚本示例:
//////////begin////////
#!/bin/bash
#retrive pid of current java code
export dst_dir=/usr/local/yourdir/backend/node4customer
export jar_name=tojoy-backend-0.0.1-SNAPSHOT.jar
export jar_port=8091
#export pid=`ps -ef|grep java |grep ${jar_name} |awk -F' ' '{print $2}'`
export pid=`netstat -tnulp|grep ${jar_port}|grep java |awk -F' ' '{print $7}'|awk -F'/' '{print $1}'`
echo The current killed java pid is ${pid}
#firstly kill the current java code
kill -9 ${pid}
export JVM_OPTS="-server -Xms2G -Xmx2G -Xmn896M -Xss512k -XX:PermSize=96M -XX:MaxPermSize=256M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=1 -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError"
#start the java code again
echo JAVA_HOME is ${JAVA_HOME}
#this operation is vip
cd ${dst_dir}
nohup java -jar ${JVM_OPTS} ${jar_name} > /dev/null  &
echo sleep for 2 seconds
sleep 2
//////////end//////////

【小结】
1> 如果命令是通过安装而不是解压配置的,则基本不用配置当前用户的环境变量,否则,必须在当前用户环境变量中配置;
2> 通过nohup执行,注意将日志重定向到设备/dev/null上,避免nohup.out持续性增大;
3> 在当前主机远程执行目标主机上的脚本,相当以当前用户登录ssh新开一个会话;
4> 要核查已有的环境变量是否生效,可以echo日志分析;

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    Linux通过Shell脚本命令修改密码的两种方式

    1. ssh 远程到主机; 2. 切换到root账号; [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]; 3. passwd username 使用passwd username 修改 username 的...

    远程批量修改linux服务器密码的脚本归类.pdf

    远程批量修改linux服务器密码的脚本归类.pdf

    shell脚本实现同时多台远程主机执行命令的代码分享

    主要给大家介绍了关于shell脚本实现同时多台远程主机执行命令的方法,文中给出了详细的代码示例,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    Shell脚本中执行sql语句操作mysql的5种方法

    本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的示例及其方法。 1、将SQL语句直接嵌入到shell脚本文件中 代码...

    远程批量修改linux服务器密码的脚本

    需要对服务器进行批量的修改root密码,还要在每台服务器新建一个用户,如果一个一个登到的服务器上进行修改的话,估计一个下午又没有了,首先想到的是我最喜欢的php,其中有个ssh2 模块,不得不承认用php 来处理这样...

    Shell脚本实现自动输入密码登录服务器

    主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下

    linux大作业报告

    3、设计shell脚本程序,要求用户对/home目录下的文件进行备份,压缩为Linux系统中常用的tar.gz格式。 4、设计shell脚本程序,假设用户建立了目录A和目录B,目录中不包含子目录,要求用户编写一个脚本程序,比较两个...

    在java的JSch程序中运行linux主机上的shell脚本.docx

    远程shell脚本 下面的代码放入一个文件:hello.sh,脚本的内容很简单只是用来测试,回显输出“hello <参数1> ” #! /bin/sh echo "hello $1\n"; 然后我把它放到远程主机的/root目录下面,远程主机的IP是1.1.1.1...

    rsh命令 远端登入的shell

    rsh命令的英文全称为“remote shell”,该命令提供的用户环境,也就是shell,以便指令能够在指定的远端主机上执行。 语法格式: rsh [参数] 常用参数: -d 使用Socket层级的排错功能 -l 指定要登入远端主机的...

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    计算机病毒与防护:Linux远程接入.ppt

    * * * * * * * 目录页 Linux远程接入 shell&文件传输 shell SecureCRT/xshell 需要启用sshd 文件传输 SecureCRT/xshell VNC 软件 服务端:tigervnc-server,客户端:tigervnc 配置(注:每个用户的操作只对自己生效...

    入门学习Linux常用必会60个命令实例详解doc/txt

    本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 ----------------------------------------------------...

    redhat linux教材20课程学习文档

    5.3 脚本执行命令 5.3.1 exit 命令 5.3.2 trap命令 5.3.3 if 命令 5.3.4 case 命令 5.3.5 for 语句 5.3.6 while命令 5.3.7 until命令 5.3.8 break 命令 5.3.9 continue 命令 5 .4 控制shell 5.4.1 创建命令表 5.4.2...

    Linux系统监控shell程序包-含内存cpu硬盘监控进程监控进程守护删除过期日志url监控webservice监控

    PublicSysMoniror.sh:公用系统监控脚本,用于远程监控,调用公用监控脚本入口 sysCpuMemDiskMonitor.sh:系统CPU内存和硬盘使用率监控 cleanLogFile.sh:清理日志文件脚本 ProbeUrlMonitor.sh:探测URL监控...

    Linux命令笔记

    第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页...

    多网络和Linux代理的Android无线远程控制系统

    并利用Android系统底层基于Linux嵌入式系统的特性,在被控终端上建立Linux代理执行shell命令,实现Android移动终端的远程控制。该系统可以完成一些需要获取root权限才能执行的操作,包括对Android的系统控制、文件...

    RED HAT LINUX 6大全

    6.5.1 以root身份运行 100 6.5.2 创建引导盘 100 6.5.3 误删除文档 101 6.5.4 文件工具箱 101 6.5.5 当系统不能引导时,Red Hat会 来救援 102 6.5.6 获取更多的信息 103 6.6 小结 104 第7章 SMTP和协议 105 7.1 ...

    ARM_Linux启动分析.pdf

    init程序需要读取/etc/inittab文件作为其行为指针,inittab是以行为单位的描述性(非执行性)文本,每一个指令行都具有以下格式: id:runlevel:action:process其中id为入口标识符,runlevel为运行级别,action为...

    shell编程—-服务的监控脚本

    监控数据库的shell脚本经典案例 安装mysql,和开启mysql服务 yum install mariadb-server -y systemctl start mariadb firewall-cmd --add-service=mysql 1. 检测端口命令 方法一 [root@localhost sbin]# netstat -...

    《Linux从入门到精通》

    2.9 最后的注意点 3 开始安装 3.1 安装程序的用户界面 3.1.1 用键盘导航 3.1.2 关于虚拟控制台 3.2 开始安装程序 3.2.1 启动安装程序 3.3 开始安装 3.3.1 选择一种语言 3.3.2 选择一种键盘方式 3.3.3 ...

Global site tag (gtag.js) - Google Analytics