Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

获取shell脚本自身所在目录的Shell脚本分享

获取shell脚本自身所在目录的Shell脚本分享

前几天写的七牛的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从stackoverflow,加上自己的实践整理一下。简单版下面是一个最简单的实现,可以解决大多数问题,缺陷是对于软链接显示的是软链接所在的目录lineos:false复制代码 代码如下:#!/bin/bashDIR="$( cd "$( dirname "$0" )" && pwd )"完善版这个版本解决了使用ln -s target linkName创造软链接无法正...
Shell脚本避免重复执行的方法

Shell脚本避免重复执行的方法

很多用cron定时执行的shell脚本可能会由于各种原因执行很久,会有必要在运行的时候先检查一下自身是否还在运行。本文提供的linux shell脚本用以检查以命令sh ...来执行的shell脚本。要对其他东西进行唯一性检查,可以稍微修改一下源代码。复制代码 代码如下:# 检查通过sh命令执行的shell脚本是不是还在执行当中,避免重复执行. # 把这段代码放在需要保证唯一性的程序头部即可# 注意,如果直接把此脚本放到cron里面执行的话,必须再grep...
Shell脚本实现查找字符串中某字符最后出现的位置

Shell脚本实现查找字符串中某字符最后出现的位置

需要对字符串查找其中某个字符最后出现的位置,这个在PHP (strrpos)或者Perl (rindex)里面都有现成函数可用的功能,在Shell里面居然一时想不出个道道来。在论坛上发贴也没人解答(不知道是问题太简单还是真的很高深...)。因为事情紧急等不得,于是求救大学同学。Pacman不愧是个中高手,三两下点醒梦中人:rindex.sh代码:复制代码 代码如下:#!/bin/bashstrToCheck=$1;charToSearch=$2;let p...
Shell中获取脚本所在目录绝对路径的方法

Shell中获取脚本所在目录绝对路径的方法

要得到正在执行的程序/脚本自身所存放的绝对路径,在 PHP 里面可以用 dirname(realpath(__FILE__)) ; C# 则有 System.Windows.Forms.Application.StartupPath ; java 似乎没有什么比较直接的方法,只能利用 CodeSource 来间接获取 。而在 linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取:复制...
Shell编程 Bash引号的那点事

Shell编程 Bash引号的那点事

先了解下,在bash脚本中,有三种引号1. 单引号 "2. 双引号 "3. 反引号 `单引号 两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思.双引号 两个双引号包围起来的字符串,部分特殊字符将起到它们的作用. 这些特殊字符有: 美元符$, 反斜杠, 反引号, 感叹号!.反引号 两个反引号包围起来的字符串,将作为命令来运行, 执行的输出结果作为该反引号的内容,称为命令替换, 它有另一种更好的写法: $(command)我们来看几个例子,更...
Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列?ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案。r2007 给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次:复制代码 代码如下:while ...
Shell脚本实现查杀子进程、僵尸进程

Shell脚本实现查杀子进程、僵尸进程

核心服务器上跑了一堆的脚本、程序,难免有时候会出现僵尸进程,死不死活不活的在那里占用资源,最初只是写了个根据关键字查杀进程的linux shell脚本,后来发现很多时候进程死在那里的时候其实是内部调用子进程的时候出现了问题,这时候光杀父进程根本没解决根本问题。比如说rsync的时候通过ssh来连接,rsync本身没问题,但可能ssh死掉了。因此重新写了脚本,递归查找子进程。复制代码 代码如下:#!/bin/sh# 递归找到导致进程僵死的最底层子进程并杀除....
Shell脚本实现ftok函数

Shell脚本实现ftok函数

“古老的 Sys IPC 仍然有好几种有效的用途。三种 IPC 对象是共享内存,信号灯和消息。”当使用到 IPC 的这些对象时,你需要为每个对象创建一个 Key。虽然理论上来说我们在定义一个 IPC Key 的时候可以使用任意自己喜欢的 Key ,但为了避免与其他的程序产生定义重复,在 UNIX/Linux 中一般会使用 key_t ftok(const char *path, int id) 函数来生成一个比较唯一的 Key 值。然而,“每个人都讨厌 S...
Shell脚本实现在Linux系统中自动安装JDK

Shell脚本实现在Linux系统中自动安装JDK

A:本脚本运行的机器,LinuxB:待安装JDK的机器, Linux首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本:复制代码 代码如下:$ ./install-jdk.sh B的IP or:复制代码 代码如下:$ ./install-jdk.sh "B的IP" "JDK的URI" 就可以在机器B上安装JDK。jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即可...
Shell脚本中非交互式修改密码的两种方法

Shell脚本中非交互式修改密码的两种方法

今天在写一个shell脚本的时候发现需要设置用户的密码,而设置密码是交互式的,这样在脚本中显然是不太好的,因此上网查找资料,发现了以下两种常见的非交互式设置密码的方式:1:使用chpasswdchpasswd其实是通过用户输入"用户名:密码"来更改一组用户的密码,还是一个可以批量修改密码的工具,具体的用法详见chpasswd用法,这里只做简单的介绍格式:# echo 用户名:密码 | chpasswd实例:添加一个doiido的帐号,密码为123456复制...
<< 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 >>