当前位置:首页 » 编程软件 » sh脚本输入命令

sh脚本输入命令

发布时间: 2023-03-21 16:43:17

⑴ 怎么通过你shell脚本删除文件的某一行以及后面几行

1、启动linux系统,用ssh工具(xshell或者SecureCRT等)连上Linux系统。

⑵ Lunix运行脚本、任务(sh、nohup、qsub)

产生日志:

sh **.sh &> xx.log

不产生日志:

sh **.sh > /dev/null 2>&1 &

nohup:no hang up 的缩写,就是不挂断的意思 。 

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。 该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。 在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。

使用权限:所有使用者

语法格式

nohup Command [ Arg … ] [& ]

参数说明:

Command :要执行的命令。

Arg :一些参数,可以指定输出文件。

& :让命令在后台执行,终端退出后命令仍旧执行。

实例

以下命令在后台执行 root 目录下的 runoob.sh 脚本:

nohup /root/runoob.sh &

在终端如果看到以下输出说明运行成功:

appending output to nohup.out

这时我们打开 root 目录 可以看到生成了 nohup.out 文件。

如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:

ps -aux | grep "runoob.sh"

参数说明:

a  : 显示所有程序

u  : 以用户为主的格式来显示

x  : 显示所有程序,不区分终端机

另外也可以使用 ps -def | grep "runoob.sh" 命令来查找。

找到 PID 后,就可以使用 kill PID 来删除。

kill -9  进程号PID

以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:

nohup /root/runoob.sh > runoob.log 2>&1 &

2>&1  解释:将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

0 – stdin (standard input,标准输入)

1 – stdout (standard output,标准输出)

2 – stderr (standard error,标准错误输出)

实时监测日志输出内容命令:tail

tail 命令是nohup命令的好搭档。配合-f参数,可以实时监视向日志文件增加的信息。

tail -f myout.log

tail -f 等同于–follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F 等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tailf 等同于tail -f -n 10,与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。

监测程序是否在正常运行中:ps

ps命令也可以和nohup命令配合使用,用于显示当前进程 (process) 的状态。可以监视后台程序是否在正常运行中或者已经挂掉。

ps -ef|grep yourcommand           # -ef 参数显示所有命令,连带启动时的命令行参数

qsub命令用来从登陆节点上向计算节点进行任务投递。前提是在服务器上有集群管理工具分配计算节点等。SGE(SGE, Sun Grid Engine)集群管理工具可以用来提交批处理作业,SGE支持单或多节点作业,它将用户投递的任务进行排队,然后将任务交给能够运行的结算节点执行,工作流程可以分为四步:接受用户投放的任务;在任务运行以前,将任务放到一个存储区域;发送任务到一个执行设备,并监控任务的运行;运行结束写回结果并记录运行日志。

qsub [ options ] [ command | -- [ command_args ]]

1. -@ optionfile (contains all valid options)  就是把qsub命令的可选项组合成一定功能的语句,保存在一个文件中。  qsub -a optionfilename jobfilename  

2. -a date_time   设置作业什么时候可以执行。   格式:CC YY MMDDHHMM.SS 如 201109272213.21   qsub -a 201109272213.21 ../simplejob

3. -A account_string  Identifies the account to which the resource consumption of the job should be charged   设置一个作业的账户名,便于统计该账户使用的资源等信息    qsub -A testaccountname jobname  

4. -ac 添加名/值对到作业上下文   -dc 删除。。   -sc 设置(修改)。。   Contexts provide a way to dynamically attach and remove meta-     information to and from a job. The context variables are not     passed to the job's execution context in its environment     The outcome of the evaluation of all -ac, -dc, and -sc options     or corresponding values in qmon is passed to defined JSV     instances as parameter with the name -ac.  

5. -ar ar_id 分配已提交作业,作为它的一部分,给已存在预约。ar=advance reservation   qsub -ar 60 jobname   #ai_di = unsigned integer   

6.  -b y[es]|n[o]      Gives the user the possibility to indicate explicitly whether       command should be treated as binary or script.     

7. -binding 等待理解

8.  -c occasion_specifier(际符)  定义或者重定义作业是否要被检查,if是,在什么环境下。        n           no checkpoint is performed.               s           checkpoint when batch server is shut down.               m           checkpoint at minimum CPU interval.               x           checkpoint when job gets suspended.               <interval>  checkpoint in the specified time interval.   qsub -c n jobname

9. -C prefix_string 前缀字符串定义一个在作业命令中的指令     qsub -C "#$" ../simplejob   

10.  -ckpt ckpt_name 选择检查点环境来检查一个作业,同时声明这个作业是检查点作业。      qsub -ckpt allanckpt ../simplejob    

11.  -clear 重置作业的所有元素为初始默认状态    qsub -clear ../simplejob   

12.  -cwd =current working directory  从当前的目录开始执行作业。如果有相应的配置文件的话,    这个命令将启动网格引擎的路径别名设备。    

13.  -dl date_time 设置作业在deadline之前执行完,格式为CC YYU MMDDHHMM.SS    qsub -dl 201101131159.01 ../simplejob

14.  -e [[hostname]:]path,...定义或重新定义作业的标准错误流使用的路径 e=stderror

15.  -h | -h {u|s|o|n|U|O|S}... h=hold 暂停作业执行       'u' .........user hold.             `s'  denotes a system hold.               `o'  denotes a operator hold.               `n'  denotes no hold (requires manager privileges).               `U'  removes a user hold.               `S'  removes a system hold.               `O'  removes a operator hold.        qsub -h ../simplejob(qsub只能使用-h)

16.  -l resource=value,... l=launch 启动满足资源需求的作业    Launch the job in a Grid Engine queue meeting the given resource               request list.  In case of qalter the previous definition is               replaced by the specified one.    qsub -l s_core=5 ../simplejob

17.  -q wc_queue_list 定义或重定义可能用来执行作业的队列,包括群聚队列、队列域、队列实例。    qsub -q all.q ../simplejob

18.  -hard  表示该作业在安排执行之前,作业的资源需求必须满足。    qsub -hard  ../simplejob

19.  -soft 表示该作业在安排执行之前,作业的资料需求可以有、但不必须有。    qsub -soft ../simplejob

20.  -help 获取帮助    qsub -help

21.  -hold_jid   wc_job_listt 定义或重定义当前提交的作业对哪些作业有依赖,所依赖的作业使用通配符作业清单表示:wc_job_list    qsub -hold_jid 63926 ../simplejob

22.  -hold_jid_ad wc_job_list ad=array dependency list of the submitted job    定义或者重定义组作业依赖列表。    qsub -hold_jid_ad 1-1200

23.  -t n[-m[:s]]    指定组作业的数量,将指示器与作业关联    qsub -t 1-1200 ../simplejob

24.  -i [[hostname]:]file,... 定义或重定义一个文件为作业的标准输入流    qsub -i stdin job

25.  -j y[es]|n[o] 指定作业的标准错误流是否合并到标准输出流,如果-j y 和-e都存在的话,SGE将忽略后者。    qsub -j y ../simplejob

qstat -f # 查看用户任务

qstat -j jobId  # 按任务id查看

qstat -explain a|c|A|E -j jobID # 查看任务任务并给出解释

qstat -u user  # 按用户查看

qw: 表示等待状态

hqw: 任务挂起等待中,待依赖的任务完成后执行

Eqw: 投递任务出错

r: 表示任务正在运行

s: 暂时挂起

dr: 节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失

qdel -j 1111  删除任务号为1111的任务

qdel -u AAA  删除AAA投递的所有任务

欢迎大家交流心得~~~3QU!!!...........

---------------------------------------------------------------------------------------------------------I am a line !----------------------------------------------------------------------------------------------

⑶ linux 命令中的sh是什么意思

1、sh是linux中运行shell的命令,是shell的解释器,shell脚本是linux中壳层与命令行界面,用户可以在shell脚本输入命令来执行各种各样的任务。

要运行shell脚本,首选需要给shell脚本权限,这里里以hello.sh文件为例,首先需要按下“crtl+shift+T”打开终端窗口:

⑷ 在mac中怎么运行.sh文件哦

在mac终端下运行shell脚本。

1、写好自己的脚本,比如aa.sh。

2、打开终端执行。

方法一: 输入命令 ./aa.sh

方法二:直接把 aa.sh 拖入到终端里面

(4)sh脚本输入命令扩展阅读:

Mac是苹果公司自1984年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro等计算机。使用独立的Mac OS系统,最新的macOS系列基于NeXT系统开发,不支持兼容。是一套完备而独立的操作系统。

macOS操作系统界面非常独特,突出了形象的图标和人机对话(图形化的人机对话界面最初来自施乐公司的Palo Alto研究中心,苹果借鉴了其成果开发了自己的图形化界面,后来又被微软的Windows所借鉴并在Windows中广泛应用)。

MAC常用快捷键:

1、新增邮件(⌘ + Shift + I)

2、搜寻文字定义(⌘ + Control + D)

3、萤幕截图 (⌘ + Shift + 4)

4、最小化所有视窗 (⌘ + Option + M)

5、显示最常用应用程式(⌘ + Shift + Tab)

6、关闭 Safari 分页(⌘ + W)

7、清空桌面画面(⌘ + F3)

8、微调音量(Option + Shift + F11/F12)

9、直接卷动到最上方或最下方(⌘ + 上/下)


⑸ Mac下建立.sh脚本文件

首先我们需要建立一个脚本文件,可以用文本编辑器或者其它工具(如VS Code)建立,注意保存为.sh格式。如,建立一个名为test1的.sh文件:test1.sh。在文件中我们可以写一段最简单的命令:echo Hello World!!!

二、赋予脚本可执行的权限

1、进入Mac终端

2、进入test1.sh文件所在的目录,cd 空格,拖拽文件到终端,然后删除 /文件名 即可

3、赋予脚本可执行权限,输入命令:chmod +x test1.sh 回车

⑹ Shell脚本编程实战

做 Java 的肯定都接触过 Linux 系统,那么很多时候我们在开发的过程中都是把我们项目打成一个jar包,或者是war包的形式,然后通过 XFTP 上传到我们服务器的指定目录,然后运行一端启动脚本,让我们的项目变得可以访问 就像 ./sh service.sh start 然后启动我们写好的 sh 的shell脚本。接下来我们就来学习一下关于 Shell 脚本是如何写出来的。

Shell 脚本是什么?Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,也就是说,我们用户每输入一条命令,Shell 就会相对应的执行一条命令。当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。

在我们的 Shell 脚本中,会有各种各样的内容,赋值,计算,循环等一系列的操作,接下来我们就来看看这个 Shell 脚本怎么写吧

1.查看自己当前系统默认的 Shell

echo $SHELL

输出:/bin/bash

2.查看系统支持的Shell

cat /etc/shells

输出:

/bin/sh /bin/bash /usr/bin/sh /usr/bin/bash

也就是说,我们的云服务器是支持我们在这里给他安排 Shell 脚本的

我们这时候先来安排一下 sh 的文件,创建一个文件夹,然后在其中创建一个 sh 的文件。

mkdir /usr/local/shelltest

touch test.sh

创建完成我们编辑一下内容

vim test.sh

然后我们出来运行一下我们的 Shell 的第一个脚本

bash test.sh

出来的结果是 Hello World Shell

一个及其简单的脚本出现了,接下我们就分析一波我们写了点啥?

#!/bin/bash

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

我们在之前也使用了 echo $SHELL 来查看了自己系统默认的是哪一种 sh 解析器,之前看到的是/bin/bash,所以我们在写 Shell 脚本的时候,我们在开头默认的约定中,我们写了这个是用 /bin/bash 来进行解释的,

那么我们如何像之前调用我们的当前目录中的 Shell 脚本一样去调用他呢?就像这个样子的 ./sh service.sh start

1.授权,

我们先不授权试一下看看能通过 ./test.sh 进行调用么

bash: ./test.sh: Permission denied 会提示这个,也就是没有授权定义,

授权命令:chmod +x test.sh

2.执行 ./test.sh

然后调用就能正常输出了,就是说,在当前的目录下执行这个脚本命令。

变量命名实际上很简单,我们先来试一下

name=yikeji

这时候我们怎么使用变量呢?实际上只要在前面加上一个符号就可以 $

echo $name

上面的两种写法都是可以的,外面的大括号加和不加区别不大,可以省略,直接就 $name 就可以使用你定义的变量

使用括号的意义一般在于区别某些变量,比如你写了一串的内容,可能写的是 echo $nameismyfriend ,如果连在一起,是不是有点尴尬,这时候就可以使用括号区别一下, echo ${name}ismyfriend 不使用括号的时候,他就去找nameismyfriend这个变量了,就无法出来我们要的效果。

unset name

这时候我们就把我们刚才定义的 name=yikeji 这个变量给去掉了,我们可以调用一下我们的变量看是什么?

echo $name

这是不是就证明我们自己定义的变量已经删除了

那么我们需要一个关键字,大家肯定能想到是什么关键字 readonly

我们先给name赋值,然后使用 readonly 设置只读,然后再改变一下试试,

竟然是真的,如果不设置只读,是不是会重新可以进行赋值,我们测试个年龄,

所以我们就可以肯定,readonly就是设置只读的关键词,记住了么?

那么设置只读的变量可以删除么?毕竟总有杠精的面试官会提问这个棘手的问题,但是,阿粉试过的所有方式好像都是不行的,阿粉就直接重启了自己的服务器,这样临时的变量就不存在了!

说真的,Shell脚本的流程控制数一般才是yyds,为什么这么说,因为你在写大部分的脚本的时候,流程控制的地方永远是最多的,判断,选择,等等一系列的函数,当时熟练使用的时候,就发现这东西确实很有意思。

我们先说最简单的 if else 这也是我们最经常使用的判断,在写 Shell 脚本的时候,就不像我们的 Java 中直接写

Xshell 中的语法就不是这个样子的, Xshell 语法:

末尾的 fi 就是 if 倒过来拼写,我们可以写一个 if 的脚本试一下这个流程能否理解。

这里申明一下,

我们在上面这段脚本中写就是内容就是,我们给脚本传入一个值,然后比对这个值和2的大小关系,然后输出我们指定的内容。

运行后就能看到

$1 表示我们给 Shell 脚本输入的第一个参数, $0 就是你写的shell脚本本身的名字,$2 是我们给 Shell 脚本传的第二个参数

大家在部署某些项目的时候,是不是启动命令就很简洁,就是 sh service.sh start 类似这种的,那我们来看看一般这种是怎么写的,这就用到了另外一块的内容,和 if 类似,在 Java 中也有,那就是 Case .

我们先来看看 Case 的语法,

case ... esac 实际上就和 Java 中的 Case 是非常相似的,case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令. esac 是一个结束的标志。

光说不练,假把式,我们来搞一下试试写一个脚本来搞一下。就用我们刚才说的 sh servic.sh start 来进行测试。

我们来看看运行结果

那么这段 Shell 脚本是什么意思呢?其实很简单,匹配我们传入的第一个字符,和 start 还有 stop 进行比较,如果匹配上之后,输出命令,最后退出即可。

是不是感觉没有那么复杂了呢?

说到流程控制,那么肯定不能不说 for , 毕竟 for 循环在 Java 中那可是重头戏。

我们先看他的格式

那么我们有没有说像是 Java 中那种 for 循环一样的方式呢?比如说这个 for ((i=1; i<=j; i++))

实际上也是支持这种的,我们来写一个试试。

执行一下看看

既然有 for 那是不是就有 while 呢?是的,没错,确实是有 while ,也是循环的意思,但是写法有略微不一样的地方

我们来举个尝试打印九九乘法表来看一下

是不是也挺简单的?

其实 Shell 脚本的编写一般都是在实际应用中提升,单纯的写测试脚本,也是可以让自己对知识的掌握比较充分,而我们一般都是写一些比较简单的脚本,复杂的不是还有运维么?

⑺ 如何运行shell脚本

编写好的shell脚本(如:test),可以采取两种方式进行运行: 一、 $ sh test 一般不采用这种调用方式,尤其不采用“sh<test”的调用方式,因为这种方式将禁止shell读取标准输入。 也可以采用 $ ksh test 这种方式要求shell具有“可读”的访问权限。 二、直接运行可执行的shell脚本之前,首先应使用下列chmod命令,把shell脚本文件设置为可执行的文件。 chmod 755 test(除文件属主可写之外,每个用户均具有读和可执行的访问权限) chmod +rx test(同上) chmod u+rx test(只有文件属主具有读和执行的访问权限) 按照上述要求设置shell脚本文件的访问权限后,可采用下列方式,直接运行shell脚本了。 1、test(如果命令检索路径包含当前目录) 2、./test(如果命令减缩路径不包含当前目录) *说明: sh test 方式调用一个shell叫蹦可能会禁止某些shell特定的扩展功能,因而可能引起脚本无法正确执行。

⑻ linux下shell脚本执行过程中重新输入命令

其实可以写成一个脚本
function 就好
也可以直接调用
比如说我有2个文件
abcd.sh
#!/bin/bash
echo $1

test.sh
echo pls input something
read input
clear
abcd.sh $input

现在我执行test.sh

$ test.sh
pls input something
zzzzzzzzzzz
结果是
zzzzzzzzzzz
这就是简单的调用
你可以传递参数就好
如果你有多个需要输入的就很麻烦。。。
写成方法会更好些

⑼ linux如何在终端里输入shell脚本

  • 一般以#!/bin/sh开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。

  • Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。

  • 以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构)。

  • 当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用sh ./file.sh方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他)。

  • 整个shell脚本,其实就相当于你在终端输入的一系列命令,如果想在shell里做什么,就先想想在终端可以做什么吧,字符的的连接,就是直接用 "" 双引号,输出,变量定义无 $ 符号,但是使用时一定要加上 $ 符号。

  • "=" 赋值符号,两边一定不能有空格,这和其他语言有区别,尤其是你还有自己代码美观风格时特别注意,否则会报语法错误!

  • for 中的数组内容是以 " " 空格分隔,而非 "," 逗号分格。

  • 条件判断 [ true ] 中括号 后面需要有一个空格,但是两个中括号之间不能有空格如 [[ true ]]。

  • while 条件判断可以用 () 括号,也可以用 [[ ]] 中括号。

  • 如果用windows写shell,一定要注意换行符格式 而非 , 需要借助一些编辑器(如notepad++)更改换行符格式!

热点内容
支持编译成机器码的语言 发布:2024-04-27 17:31:59 浏览:745
串口服务器ip限制 发布:2024-04-27 17:30:20 浏览:501
sql编程入门经典 发布:2024-04-27 17:28:52 浏览:282
红木卧室有哪些配置 发布:2024-04-27 17:09:47 浏览:855
中心机编程 发布:2024-04-27 17:00:11 浏览:116
lms滤波算法 发布:2024-04-27 16:55:37 浏览:444
苹果电脑远程桌面连接服务器 发布:2024-04-27 16:53:08 浏览:234
为什么安卓手机没有回响 发布:2024-04-27 16:53:08 浏览:375
搭建邮箱中继服务器 发布:2024-04-27 16:40:42 浏览:198
我的世界的神奇宝可梦服务器 发布:2024-04-27 16:28:28 浏览:589