精华内容
下载资源
问答
  • 10小时全掌握Linux下shell编程

    千人学习 2018-07-13 14:50:33
    从没上过课的学渣 学了还不会的学弱 想学懂的学霸 10小时全掌握Linux下shell编程 工作、面试全没问题。
  • Linux下shell脚本实现记录日志

    千次阅读 2019-09-22 10:45:48
    Linux下shell脚本实现记录日志   最近写了shell脚本,有个基于jacoco调用的从指定Tomcat中自动生成覆盖报告文件到指定的Nginx目录中的脚本,Tomcat有多个项目,这个脚本是后台跑的,而且是开了定时任务跑的。想...

    Linux下shell脚本实现记录日志

      最近写了shell脚本,有个基于jacoco调用的从指定Tomcat中自动生成覆盖报告文件到指定的Nginx目录中的脚本,Tomcat下有多个项目,这个脚本是后台跑的,而且是开了定时任务跑的。想着记录一些日志,方便知道脚本的运行状态,也方便排查。

    shell记录日志的代码

    #!/bin/bash
    #定义日志的根目录
    logDir=/var/log/
    echo $logDir
    #日志路径和文件
    logFileName="$logDir/log.out"  
    #文件大小这里以行数来计算
    fsize=2000000     
    
    #log函数,接收两个参数:level 日志级别,content 日志内容
    #level: INFO ,WARN,ERROR
    #content: log info
    function log(){
      #judge the params,it must 2 params;
       if [ 2 -gt $# ]
       then
         echo  "WARN parameter not correct in log function"
         return;
       fi
       #如果日志的根目录不存在,则应该先创建
       if [ ! -d $logDir ];then
          mkdir -p $logDir
       fi
       #判断日志文件是否存在,不存在则创建
       if [ ! -e "$logFileName" ];then
         touch $logFileName
       fi
       #日志时间
       local curtime
       curtime=`date +"%Y%m%d%H%M%S"`
       #判断日志的大小,然后如果对于指定的行数,则应该备份旧的日志文件,然后创建新的日志文件
       local cursize
       if [ ! -e "$logFileName" ];then
         echo "There is no log file!Not record log to file!"
         return
       fi
       # 计算现有的日志文件的行数
       cursize=`cat $logFileName | wc -c`
       if [ $fsize -lt $cursize ];then
         echo "backup old log file"
         # 备份文件名为:日期.log
         mv $logFileName $curtime".log"
         # 创建新的日志文件
         touch $logFileName
       fi  
       # 打印控制台日志和记录日志到文件
       echo "$curtime $*"
       echo "$curtime $*" | tee -a $logFileName
    }
    
    

    总结

      这个日志文件主要是记录我们在脚本中自己主动输出的日志,对于我们调用其他脚本的日志的错误和信息,该怎么写入到我们自定的日志文件中是个问题。例如:在我们的脚本中执行指定Tomcat的sh startup.sh,启动tomcat时startup.sh报的错,那该怎么打印到我们指定的日志文件了。如果有错误,欢迎大家指正。

    展开全文
  • Linux下Shell重定向

    万次阅读 2012-08-02 16:15:57
    Linux下Shell重定向 分类: Linux系统编程2010-12-24 11:24 795人阅读 评论(0) 收藏 举报 1. 标准输入,标准输出与标准错误输出 Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。 标准...
     

    Linux下Shell重定向

    分类: Linux系统编程   795人阅读  评论(0)  收藏  举报

    1. 标准输入,标准输出与标准错误输出

    Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。

    标准输入:从键盘输入数据,即从键盘读入数据。

    标准输出:把数据输出到终端上。

    标准错误输出:把标准错误输出到终端上。

    默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。

    系统为这三个文件分配了文件标识符fd(file descripter).

    在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.

     

    2. 重定向

    重定向分为输入重定向与输出重定向。

    所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。

    所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。

     

    ""<"表示输入重定向运算符,">"表示输出重定向t运算符。

    "<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。

    ">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。

     

    3. 下面看一下几个例子

     

    (1)输入重定向

     [root@localhost ~]# wc</etc/inittab
    53 229 1666

     

    wc统计行数,单词数, 字符数

    其中wc的输入来自 /etc/inittab

     


    [root@localhost ~]# wc <<aa
    > 1
    > 11
    > 111
    > aa
    3 3 9

    wc统计分隔符aa之间的内容。

     

    (2)输出重定向

     

     [root@localhost ~]# ps -ef >a.txt   //把进程的信息输出重定向到a.txt文件中去

     [root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去

     

     

    其实,所谓的输入输出重定向就是不从键盘输入和屏输出。

     

     

    4. Linux下输出重定向的典型分析

     

    (1) a.out > outfile 2>&1
    (2) a.out 2> &1 >outfile

     

    分析:

    0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可以省略,默认为标准输出。

    (1)首先把a.out重定向到outfile文件中去。然后把 2>&1把标准错误输出重定向到标准输出中去。此时的标准输出已经重定向了,相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。

    (2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。

     

    因此,(1)表示标准输出与标准错误都到outfile中去了。

             (2)表示标准输出到outfile,但标准错误输出仍然在终端。

     

     

    ls 1>/dev/null 2>/dev/null

    ls >/dev/null  2>&1

     

    /dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。

    即标准输出与标准错误输出不显示。

    以上两个命令表示的含义是相同的。

     

    以上是关于Linux下的重定向问题,一定要深刻理解原理。

    展开全文
  • linux下shell脚本实现文件的批量处理

    千次阅读 2019-04-25 14:47:48
    linux下shell脚本实现文件的批量处理说明:1、shell文件创建2、文件编辑注意:3、执行shell文件4、停止正在执行shell文件 说明: 在使用linux虚拟机处理数据的过程中,由于需要处理的文件量较大,并且有大量重复的...

    说明:

    在使用linux虚拟机处理数据的过程中,由于需要处理的文件量较大,并且有大量重复的操作,为了省时省力,发现可以使用shell脚本一次处理大量的文件。

    1、shell文件创建

    命令行输入touch XXX.sh

    2、文件编辑

    命令行输入vi XXX.sh
    点击 i 进入编辑模式
    输入shell脚本,以下代码以文件复制为例

    #!/bin/bash
    
    echo "copy file"
    for ((i=226; i<228; i++))
    do
    cp /home//Documents/$i.nii /home/fsluser/Documents/R/$i
    done
    
    

    注意:

    1. #!/bin/bash是必要的,告诉系统这个脚本使用哪一种 Shell脚本
    2. 使用了C语言类型的for语句依次对文件进行处理
    3. cp /home//Documents/$i.nii /home/fsluser/Documents/R/$i是文件复制的命令行代码,同理可替换成其他命令

    点击esc退出编辑,输入:wq回到终端。

    3、执行shell文件

    命令行输入sh XXX.sh

    4、停止正在执行shell文件

    当shell脚本正在执行时,若想强行终止,可按如下操作:

    命令行输入:ps -ef | grep XXX文件名
    找到进程对应的进程代码(如下图中进程代码为8630)

    命令行输入:kill -9 XXX进程代码
    强制终止进程

    更多shell教程,请参考: shell教程|菜鸟教程.

    展开全文
  • Linux下shell脚本中的read命令

    千次阅读 2016-09-01 10:27:09
    Linux下shell脚本中的read命令的作用是从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量,在shell脚本中使用read命令时可以带多个不同的参数。

    read命令作用:

    从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量

    参数:
    -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
    -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说  明。
    -p 后面跟提示信息,即在输入前打印提示信息。
    -e 在输入的时候可以时候命令补全功能。
    -n 后跟一个数字,定义输入文本的长度,很实用。
    -r 屏蔽,如果没有该选项,则作为一个转义字符,有的话 就是个正常的字符了。
    -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
    -t 后面跟秒数,定义输入字符的等待时间。

    -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

    示例:

    $ vi shell_0831.sh
    
    #!/bin/bash
    echo "**************************read command**************************"
    #read -p and -t
    echo "----1.read -p and -t ----"
    read -t 20 -p "please enter your name:" name
    echo $name
    #read -s -p
    echo "----2.read -s and -p----"
    read -s -p "please enter your pass:" pass
    echo -e "\n"
    echo "your pass is $pass"
    #read -d
    echo "----3.read -d----"
    read -d e
    echo "end as e"

    运行脚本程序:

    $ ./shell_0831.sh
    **************************read command**************************
    ----1.read -p and -t ----
    please enter your name:jack
    jack
    ----2.read -s and -p----
    please enter your pass:
    
    your pass is 123
    ----3.read -d----
    abcd
    ffff
    eend as e



    展开全文
  • linux 下shell中if的“-e,-d,-f”是什么意思

    万次阅读 多人点赞 2015-10-20 11:14:48
    -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则...
  • Linux下shell脚本启动jar包

    千次阅读 2018-09-30 14:46:58
    Linux下shell脚本启动jar包    不说废话,直接上图。    这是整个目录结构。直接看脚本。      上面是完整的脚本代码,原理不多说,百度Google都可以。需要注意的地方是以下几点: 第4行的MA...
  • Linux 下shell编程

    千次阅读 2015-12-17 18:35:07
    Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便管理员进行设置或者管理。  序员的角度来看...
  • linux下shell 脚本 中windows换行符换成linux换行符 sed -i 's/\r//' filename window默认是 \r\n linux下是\n unix是\r posted @ 2018-11-20 15:25 书书数数 ...
  • 之前用Java写了个在Windows Server服务器上面扫描指定目录的所有Tomcat服务器并定时...由于Linux下Shell脚本可以实现此效果,就没有考虑用Java代码写了,下面是Linux下shell脚本监控Tomcat的状态并实现自动启...
  • 如何在linux下shell编写脚本中模拟键盘输入做Docker构建镜像的练习,写了下面这个 Dockerfile 文件,其中 yum install tomcat 执行过程中需要用键盘输入两次字符”y”以便确认选项,Dockerfile 脚本命令如下:FROM ...
  • Linux 下Shell脚本回滚删除数据

    千次阅读 2017-01-05 16:10:57
    Linux 下Shell脚本回滚删除数据 近期公司一直在做一些OA系统的开发,我在里面主要协助帮忙搭建及维护测试环境,由于环境的特殊性,我几乎每天需要对数据进行备份及还原,所以就应用到了一些shell脚本,但是在由于...
  • linux下shell命令解析器

    千次阅读 2018-11-05 16:35:33
    用户在提示符输入的命令都由shell先解释然后传给linux核心。 当普通用户成功登陆,系统将执行一个称为shell的程序,shell进程提供了命令行的提示符,对普通用户用”$”作提示符,超级用户用”#”作提示符。一旦...
  • Linux下Shell从入门到精通完整版

    千人学习 2017-03-03 13:47:09
    本套课程适用于初学者以及各类运维人员,我们可以通过本次的编程技术学习,明白并掌握企业里面的运维编程脚本,同时掌握企业运维到底要求会什么东西,有哪些是我们必须要掌握的知识。
  • linux下shell脚本实例

    万次阅读 2018-06-30 00:44:14
    1.用户建立脚本 执行 users_create.sh userlist passlist 建立 userlist 列表中的用户 ...当脚本后面跟的文件个数不足两时,报错 当文件行数不一致时报错 当文件不存在时报错 当用户存在时报错 ...
  • 这个问题有两种可能,一种是由于当前用户...可以用shell类型命令:echo $SHELL 查看当前用户的shell类型,如果是/bin/sh,使用:chsh -s /bin/bash username或者使用usermod -s /bin/bash username命令修改shell类...
  • Linux下shell显示用户名和主机名

    万次阅读 2018-01-19 19:00:48
    最近在服务器上重新安装了一点东西,结果登录的shell界面变成了显示-bash-4.2$,显得很丑而且使用起来十分不方便,主要是scp时需要用户名和主机名,因此对其进行了修改。 2. 解决方案 修改当前用户的.bash_...
  • Linux下shell脚本export命令

    千次阅读 2017-10-18 09:29:37
    1.export命令 ...在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的一点是,export的效力仅及于该次登陆操作。注销或者重
  • linux shell 脚本 使用adb 命令

    千次阅读 2019-06-19 09:17:22
    echo "start dump meminfo" i=0 while : do ... #adb shell dumpsys meminfo >> ./shell.log adb shell cat /proc/meminfo >> ./shell.log i=$(( $i + 1 )) time=$(date "+%Y-%m-%...
  • linux下shell脚本启动其他可执行程序

    千次阅读 2019-12-03 20:55:08
    linux下shell脚本启动其他可执行程序 零、前言 一、C++代码 二、shell脚本 三、shell运行效果 零、前言 linux下的项目中经常需要使用shell脚本去启动其他程序的操作,下面是自己编写的测试程序,以方便不会的同学...
  • shellLinux、Solaris) bat(windows) 含义 # rem 注释行 /【directory】/【directory】/.../【directory】/ 【disk】:\【directory】\【directory】\...\【directory】\ path 【变量】=...
  • Linux下shell脚本ftp下载文件

    千次阅读 2019-01-16 10:00:40
    331 Please specify the password. 530 Login incorrect. Login failed. 530 Please login with USER and PASS. #注意密码有特殊字符一定要转义 加\ #!/bin/bash #连接ftp服务器信息 IP=XXXX ...
  • Linux下shell脚本定时执行

    千次阅读 2017-05-11 10:10:50
    Linux设置定时任务有时候会不生效,这里提供完整的解决方法
  • Linux 下Shell脚本中的加减乘除运算

    万次阅读 2019-10-27 15:28:35
    在用shell脚本语言编程的时候,我们经常用到加减乘除等基本的数学运算操作,现在整理一下,放在这里,以备后用。 Shell中常用的数学运算符有一下几个: +:对两个变量做加法。 -:对两个变量做减法。 *:对两个...
  • Linux登陆主机后,在执行Script之前,其实我们已经... Linux下每个账号都可以自定义Login shell,在/etc/passwd文件中。Login shell定义在第七个字段,如果这个字段的shell程序不存在、不合法,或执行失败,则无法登陆
  • Linux下Shell命令加减乘除计算

    万次阅读 2016-09-19 23:08:00
    使用 expr命令 (其中做乘的时候*号要用斜杠进行转义) 除于 [hadoop-user@hadoop1]$ echo `expr 9 / 3` 3加 [hadoop-user@hadoop1]$ echo `expr 9 + 3` 12减 [hadoop-user@hadoop1]$ echo `expr 9 - 3` ...
  • 一、shell种类 sh(Bourne shell):第一个流行的shell由Steven Bourne发展出来的 csh(C shell):由伯克利大学的Bill Joy设计依附于BSD版的... bash:当前Linux版本的shell。这个shell是Bourne shell的增强版...
  • linux下shell脚本如何进入父目录

    千次阅读 2017-05-26 10:20:16
    总有些人发生在linux下无法进入上级目录,在网上收索了一堆,全是cd ..,还有截取路径之类的,然后被人各种踩。 如果你在脚本中执行cd ..提示找不到路径,有一种可能性是你用了windows编辑器,编辑好的文本上传到...
  • Linux Shell 命令的分类及用法

    千次阅读 2016-10-08 22:19:06
    当你打算真正操纵好你的 Linux 系统,没有什么能比命令行界面更让你做到这一点。为了成为一个 Linux 高手,你必须能够理解 Shell命令的不同类型,并且会在终端正确的使用它们。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 960,134
精华内容 384,053
关键字:

linux下shell

linux 订阅