Linux入门-使用脚本

在linux上开发,经常有一些重复性劳动,建议写成脚本,省时省力还不出错。

1.新建一个文件

vi filename

如vi test.sh

2.编辑内容,linux上sh的形式比较一致

#!/bin/sh
#comments

然后跟上自己的命令就可以了,比如

mkdir tmp

cd tmp

3.最后chmod +x test.sh,可执行,就可以执行了

4.执行完毕后,你会发现确实创建了tmp,但当前目录没有变。

这是因为脚本执行时会创建一个子环境,执行完毕后回到当前环境,如果你想直接改变当前环境,使用source 来执行脚本就可以了

source test.sh

就可以看到目录切到tmp下。

Linux服务器-windows远程开发

最近项目需要在Linux环境下,本人的本是windows,怎么办么?

答:申请一台服务器,linux环境,用ssh工具就可以开发了

不过服务器上只能用vim开发,开发起来惨不忍睹,怎么办?

答:远程开发

远程开发的原理很简单,就是把服务器上的文件夹映射到windows上,就可以像windows本地开发一样了。

首先在Linux服务器上安装samba,装好后给自己配置一个samba用户,具体方法请自行百度,参考链接:http://blog.csdn.net/i_chips/article/details/19191957。

window端打开计算机,有一个映射网络驱动器选项

samba_3

打开后有两个选项

samba_4

第一个是盘符,默认就行,红框所选的地方 写上要映射的服务器文件夹地址。

填好之前在samba上配置的账号/密码,就可以用了。

"method driver /usr/lib/apt/methods/https could not be found" update error

在配置了/etc/apt/sources.list中使用了https之后,出现如下错误

$sudo apt-get update
E: The method driver /usr/lib/apt/methods/https could not be found.

如果是中文系统的话,会输出如下信息:

$sudo apt-get update
E: 无法找到获取软件包的渠道 /usr/lib/apt/methods/https 所需的驱动程序。

解决的方法是安装apt-transport-https:

$ sudo apt-get install apt-transport-https

如果此时执行

$ sudo apt-get update

更新会提示:

server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

则执行如下命令来更新本地的证书:

$ echo -n | openssl s_client -connect www.mobibrw.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee '/usr/local/share/ca-certificates/www_mobibrw_com.crt'

$ sudo update-ca-certificates

然后就一切正常了。

参考链接


li 的点超出div

在Wordpress写文章的时候,发现列表项的数字总是在DIV标签的外面,如下所示

  1. 用户界面
  2. 视图导航
  3. 视图设置

HTML的源代码如下:

<div style="background-color: #f9f9f9; border: 1px">
<ol style="padding-bottom: 2px; margin-bottom: 2px; padding-top: 2px;">
	<li>用户界面</li>
	<li>视图导航</li>
	<li>视图设置</li>
</ol>
</div>

这种情况是非常不美观的,尤其是当DIV设置了背景色的时候。

网上查询了一下,发现list-style-position:inside是用来调整这种情况的。

语法:
list-style-position : outside |inside
取值:
outside :默认值。列表项目标记放置在文本以外,且环绕文本不根据标记对齐
inside :列表项目标记放置在文本以内,且环绕文本根据标记对齐
说明:
设置或检索作为对象的列表项标记如何根据文本排列。
假如一个列表项目的左外补丁(margin-left)被设置为 0 ,则列表项目标记不会被显示。左外补丁(margin-left)最小可以被设置为 30。
仅作用于具有display属性值等于list-item的对象。如li对象。
注意: ol对象和ul对象的type属性为其后的所有列表项目(如 li对象)指明列表属性。
此属性对于currentStyle对象而言是只读的。对于其他对象而言是可读写的。
对应的脚本特性为listStylePosition

 

因此修改上面的代码如下:

<div style="background-color: #f9f9f9; border: 1px ;font-size: small">
<ol style="padding-bottom: 2px; margin-bottom: 2px; padding-top: 2px;list-style-position:inside">
	<li>用户界面</li>
	<li>视图导航</li>
	<li>视图设置</li>
</ol>
</div>

修改后的效果如下:

  1. 用户界面
  2. 视图导航
  3. 视图设置

Ubuntu 12.04安装Jetty

1. 如果没有装JDK的话,安装OpenJDK

$sudo apt-get install openjdk-7-jdk

2. 安装Jetty,Ubuntu软件源里的是Jetty6

$sudo apt-get install jetty

3. 配置Jetty,修改Jetty默认配置文件

$sudo gedit /etc/default/jetty

然后把

NO_START=1

改为

NO_START=0

再设置JDK目录

JDK_DIRS="/usr/lib/jvm/default-java /usr/lib/jvm/java-7-openjdk-i386"

4. 启动Jetty

$sudo service jetty start

5. 测试,在浏览器地址栏中输入

http://localhost:8080

Jetty的端口在/etc/default/jetty中也可以设置

参考链接 Ubuntu 12.04安装Jetty

Ubuntu中shell下root用户切换其他用户运行程序

工作中,一些程序,需要随机启动,但是不是以root用户运行,于是需要在rc.local中通过shell,从root用户切换到其他用户运行程序,命令如下:

$su -c 'command' - user

$sudo -u jetty ./nexus start

实例


/etc/rc.localexit 0之前加入如下内容:

#vim /etc/rc.local
su - jetty -c "/data/nexus/nexus-2.12.0-01/bin/nexus start"

参考链接


shell下root用户切换其他用户运行程序

sort+awk+uniq 统计文件中出现次数最多的前10个单词

使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。

$cat words.txt | sort | uniq -c | sort -k1,1nr | head -10

主要考察对sort,uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指令各部分的功能:
sort:  对单词进行排序
uniq -c: 显示唯一的行,并在每行行首加上本行在文件中出现的次数
sort -k1,1nr: 按照第一个字段,数值排序,且为逆序
head -10: 取前10行数据

参考链接


sort +awk+uniq 统计文件中出现次数最多的前10个单词

Ubuntu 15.04/18.04使用bashdb调试bash脚本

bash调试器bashdb,这是一个类似于GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能。

安装bashdb


$ sudo apt-get install bashdb

macOS下使用Homebrew安装,如下:

$ brew install bashdb

有两种启动调试的方式

1.直接在bash中传递参数的方式启动,适合需要读取$0参数为shell脚本的名字的采用这种方式启动。

$ bash --debugger xx.sh

2.使用bashdb直接启动脚本,适用于一般的脚本。

$ bashdb xx.sh

上面的操作对于ubuntu 18.04之前的版本都是可以的,但是目前的ubuntu 18.04是没有这个包的,只能手工编译安装,参考如下命令:

$ wget https://netix.dl.sourceforge.net/project/bashdb/bashdb/4.4-0.94/bashdb-4.4-0.94.tar.gz

#这个网站,国内用户下载非常慢,可以本站下载
#$ wget https://www.mobibrw.com/wp-content/uploads/2016/02/bashdb-4.4-0.94.tar.gz

$ tar -xvf bashdb-*.tar.gz

$ cd bashdb-*/

$ ./configure

$ make

$ sudo make install

常用的调试命令


  1. 列出代码和查询代码类:
    l 列出当前行以下的10行
    - 列出正在执行的代码行的前面10行
    . 回到正在执行的代码行
    w 列出正在执行的代码行前后的代码
    /pat/ 向后搜索pat
  2. Debug控制类:
    h 帮助
    help 命令 得到命令的具体信息
    q 退出bashdb
    x 算数表达式 计算算数表达式的值,并显示出来
    !!空格Shell命令 参数 执行shell命令
    使用bashdb进行debug的常用命令(cont.)
  3. 控制脚本执行类:
    n 执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
    s n 单步执行n次,遇到函数进入函数里面
    b 行号n 在行号n处设置断点
    d 行号n 撤销行号n处的断点
    c 行号n 一直执行到行号n处
    R 重新启动
    Finish 执行到程序最后
    cond n expr 条件断点

参考链接


Ubuntu 15.10,12.04 安装Apache Solr 4.10.4

Apache Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。Apache Solr是一个独立的企业级搜索应用服务器,目前很多企业使用solr开源服务。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

Apache Solr目前可以与Apache Nutch 2.3.1整合的最高版本是4.10.4,Ubuntu 15.10 ,12.04上安装的步骤如下:

1.安装Java,并设置JAVA_HOME


$sudo apt-get install openjdk-7-jre

$sudo apt-get install openjdk-7-jdk

$export JAVA_HOME=$(readlink -f `which java` | xargs dirname | xargs dirname | xargs dirname)

建议在系统的环境变量中增加"JAVA_HOME"环境变量,也可以写在~/bashrc里面。

$sudo vim /etc/profile

文件尾部增加

export JAVA_HOME=$(readlink -f `which java` | xargs dirname | xargs dirname | xargs dirname)

然后,重启机器。

2.下载Apache Solr 4.10.4


$cd ~

$wget http://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz

3.解压缩到指定目录,并建立文件链接


$sudo tar -zxvf solr-4.10.4.tgz -C /var/opt/

$sudo ln -s /var/opt/solr-4.10.4/ /var/opt/apache-solr

在系统的环境变量中增加"SOLR_HOME"环境变量,也可以写在 ~/bashrc里面。

$sudo vim /etc/profile

在文件末尾追加

export SOLR_HOME=/var/opt/apache-solr

然后,重启机器。

4.启动Apache Solr并设置端口为9876


$sudo -E java -Djetty.home=${SOLR_HOME}/example -Djetty.logs=/tmp -Dsolr.solr.home=${SOLR_HOME}/example/solr -Djetty.port=9876 -jar ${SOLR_HOME}/example/start.jar

5.在浏览器中打开网页,观察是否启动成功


在浏览器中访问http://localhost:9876/solr/

出现如下界面,说明配置成功。

Apache_Solr_4_10_4

参考链接


Nutch2.3+Hbase0.94+Solr4.10.3单机集成配置安装