2020-01-13 16:06:57 jinjiankang 阅读数 110

Linux下手工执行某个脚本可以成功,但通过Java程序使用ProcessBuilder类执行该脚本总是失败,最后定位到问题:脚本中的某些命令要写绝对路径,例如把下面的脚本片段:

hdfs dfs -put -f some.jar hdfs://mycluster/user/admin/jars/

改为:

/export/servers/hadoop/bin/hdfs dfs -put -f some.jar hdfs://mycluster/user/admin/jars/
2017-08-26 15:10:15 qq_34829953 阅读数 1815

有时候我们会遇到一些程序压缩包,已解压无需安装就可以直接运行的那种,例如sendemail,就是直接把程序压缩包下载下来,解压后直接跑sendemail那个脚本就可以实现发送邮件功能

其实很简单,只需要把sendemail这个脚本直接生成软链接放到系统路径PATH中即可。之后你就可以直接把sendemail这个命令当做系统命令来用了

这里写图片描述

解释一下:
1。之所以选择/usr/local/bin是因为这个路径是用户自己下载的程序路径(大概是这样吧,看到后面的/user/bin我有点摸不准了,不过具体选择哪个路径,也没有具体的规定)
2。把解压后的程序文件夹放到/usr/local/src中,这个路径也不是硬性规定
3。创建软链接到系统路径/usr/local/bin中呗,这样就能直接运行sendemail这个命令了
4。linux系统大小写敏感,所以我把命令改为小写,敲起来舒服一点嘛,其实这个省去的,因为使用tab键可以自动补全,不过我比较喜欢手动敲完命令

2019-09-26 13:33:37 qq_41854291 阅读数 56

1. cd 到某个路径 执行某个程序

cd /home/hil/HILexe
./HMI 

2.ssh 命令

echo "123456" | sudo -S ssh 192.168.1.18
ssh "-S cd /app && ./app_start.sh && cd bin && ./app"

123456是sudo的密码 ,ssh中执行多个命令用&&隔开

3.adb 命令

adb push /home/hil/HILexe/transfer /usr
adb shell "ifconfig br0 down && ifconfig br0 192.168.1.99 && ifconfig br0 up && cd /usr && chmod 777 transfer && ./transfer"

执行多个命令用&&隔开

4.清空共享内存块

ipcrm -M 0x000004d2
cd /home/hil/HILexe
./recvWarnMysql

5.sleep15秒 VTD切换场景

sleep 15
/home/hil/VTD.2.2/Runtime/Tools/ScpGenerator/scpGenerator -w -p 48179 -i '<SimCtrl><Apply/></SimCtrl>'
/home/hil/VTD.2.2/Runtime/Tools/ScpGenerator/scpGenerator -w -p 48179 -i '<SimCtrl><UnloadSensors/><LoadScenario filename="/home/hil/VTD.2.2/Data/Projects/Current/Scenarios/FCW_1_1_1_1_1.xml" /><Init mode="operation" /></SimCtrl>'
/home/hil/VTD.2.2/Runtime/Tools/ScpGenerator/scpGenerator -w -p 48179 -i '<SimCtrl><Apply/></SimCtrl>'
/home/hil/VTD.2.2/Runtime/Tools/ScpGenerator/scpGenerator -w -p 48179 -i '<SimCtrl><Start/></SimCtrl>'

6.修改网卡配置 启动VTD

echo "123456" | sudo -S ifconfig eno1 down
echo "123456" | sudo -S ifconfig eno1 hw ether 80:E8:2C:25:C0:55
echo "123456" | sudo -S ifconfig eno1 up
echo "123456" | sudo -S ifconfig eno1 192.168.1.149
echo "123456" | sudo -S ifconfig eno1 up
cd /home/hil/VTD.2.2/bin
./vtdStart.sh --project=FCW

7.启动OBS

cd /usr/share/applications
obs

 

2018-11-06 11:20:07 yan88888888888888888 阅读数 5200

Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。

这是因为用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行。
有2种方法可以解决这个问题,

1、在Shell文件里面获取环境变量值的路径写成绝对路径,别用环境变量的路径值。

例如获取CPU的使用情况  通过绝对路径/proc/cpuinfo 来获取值;

2、Shell脚本缺省的#!/bin/bash开头换行后的第一行用(推荐使用)

#!/bin/bash

. /etc/profile

. ~/.bash_profile

这样,crontab在执行脚本的时候,就能够读到用户的环境变量参数.
 

2016-12-01 21:24:41 budf01 阅读数 5254

浏览文件系统

1. Linux文件路径

linux文件路径和windows文件路径不同。

一个windows文件的路径可能是这样的:

C:\Users\John\Documents\test.txt

而Linux的路径是这样的:

/home/John/Documents/test

windows目录从某个盘符开始,而Linux目录结构都从/开始,这个/称为根目录。

Linux使用正斜线(/)而不是反斜线(\)划分目录。因为在Linux系统中,反斜线用来标识转义字符。用惯了windows系统要注意这一点。

2. 切换目录

在Linux系统中,可以使用命令cd来切换目录,比如要切换到/home,可以使用:

cd /home

图

在cd后加上要切换的目录即可。要切换的目录有两种表示方式:绝对路径和相对路径。

2.1 绝对路径

绝对路径定义了一个目录在系统中的确切位置,从根目录开始,相当于目录的完整表示。

绝对路径总是以/(根目录)作为起始,使用绝对路径可以清晰的表示用户想要切换到的确切位置,比如,要切换到/usr/bin:

cd /usr/bin

这里写图片描述

可能你已经注意到了,在切换目录前,$符号前有一个波浪号(~),切换目录后,~变成了切换到的目录,这个~其实就是你的主目录,~相当于/home/YOUR_ID

可以使用命令pwd来查看当前目录的绝对路径:
这里写图片描述

还可以只输入cd来从任何目录跳回主目录,即~
这里写图片描述

但是,如果你只是在自己的主目录中工作,用绝对路径未免太过冗长。例如,如果已经位于目录/home/ubuntu-kylin,在用这样的命令切换到Documents目录就太麻烦了:

cd /hoem/ubuntu-kylin/Documents

因此,Linux提供了一种简单地解决方法。

2.2 相对路径

相对路径就是指目标目录相对于当前目录的路径。

比如上面的例子,如果已经位于目录/home/ubuntu-kylin,要切换到Documents目录,可以这样:

cd Documents

这里写图片描述

可以在任何包含子目录的目录中使用相对路径。

有两个特殊字符可用于相对路径中:

  • 单点符(.):表示当前目录;
  • 双点符(..):表示当前目录的父目录,即当前目录的上一级目录。

单点符和双点符在切换目录时非常方便,加入你位于主目录下的Documents目录,想要切换到主目录下的Downloads目录,可以这么做:
这里写图片描述

必要时也可以使用多个双点符来向上切换目录。比如现在想切换到根目录下的/etc,可以:
这里写图片描述

不过,这种情况直接输入绝对路径更方便。因此,在适当的时侯选择适当的路径表示方式,可以快速的完成目录切换。

没有更多推荐了,返回首页