分类目录归档:Linux开发

Linux开发,只要在Linux环境下的一切相关开发,包括c++\goLang\Web,shell命令等。

cordova的命令集

附上cordova常用命令列表

命令 说明
cordova create <工程路径> <包名> <工程名> 创建cordova工程,例如:cordova create helloworld “org.commom.helloworld” “helloworld”
cordova platforms add android 添加平台支持。
cordova build android 给cordova项目添加android平台。
cordova run android 编译和运行项目。
cordova install android 将编译好的应用程序安装到模拟器上。
cordova plugin add <插件完全限定名> 给项目添加插件。
cordova plugin remove <插件完全限定名> 删除插件。
cordova plugin list 查看插件列表。
cordova build android 编译代码
cordova emulate android 在模拟器上运行(前提是创建好AVD)
cordova serve android 在浏览器运行
cordova run android 通过USB直接安装到真机

—————————–
插件:http://plugins.cordova.io/
如以上我们看到的,Cordova默认提供的程序界面和功能非常简单。当然你可以根据你的需要,运行标准Web开发技术对页面进行设计。但是当你需要和不同的设备进行通讯交互时,你就需要借助于一些插件,以便能够访问Cordova提供的核心API。
一般来说,你添加一个插件的目的是为了利用Cordova的API访问设备。详细的可用插件列表你可以在社区中看到(http://plugins.cordova.io/)。当然你也可以自定义自己的插件。
你可以用CLI搜索可用的插件,比如:
cordovaplugin search bar code
你可以通过以下命令安装插件,比如:
cordovaplugin add org.apache.cordova.device //设备API
cordovaplugin add org.apache.cordova.network-information //网络(事件)
cordovaplugin add org.apache.cordova.battery-status //电池(事件)
cordovaplugin add org.apache.cordova.device-motion //加速器
cordovaplugin add org.apache.cordova.device-orientation //罗盘
cordovaplugin add org.apache.cordova.geolocation //定位
cordovaplugin add org.apache.cordova.camera //摄像头
cordovaplugin add org.apache.cordova.media-capture //媒体文件处理
cordovaplugin add org.apache.cordova.media //媒体文件处理
cordovaplugin add org.apache.cordova.file //文件访问
cordovaplugin add org.apache.cordova.file-transfer //文件传输
cordovaplugin add org.apache.cordova.dialogs //对话框
cordovaplugin add org.apache.cordova.vibration //震动
cordovaplugin add org.apache.cordova.contacts //联系人
cordovaplugin add org.apache.cordova.globalization //全球化
cordovaplugin add org.apache.cordova.splashscreen //闪屏
cordovaplugin add org.apache.cordova.inappbrowser //打开新的浏览器窗口
cordovaplugin add org.apache.cordova.console //调试控制台
你可以用以下命令查看所有已经安装的插件
cordovaplugin ls
使用以下命令删除插件:
cordovaplugin rm org.apache.cordova.console
Plugin add高级选项
上面的安装方式是从registry.cordova.io库中按照id获取插件,这是一个非常通用的做法。你可以在安装时指定版本,比如:
cordovaplugin add org.apache.cordova.console@latest
cordovaplugin add org.apache.cordova.console@0.2.1
其中的latest表示获取最新版本。中间用@分隔。
如果插件不是在默认库中,而是在其他地方,则你可以指定URL:
cordovaplugin add https://github.com/apache/cordova-plugin-console.git
当然你需要先安装git。
Merge目录
前面提到,一般情况下最好不要修改各自平台下的www目录下的文件。但是如果你确实需要为某个平台定制一些内容,又该怎么办呢?
项目根目录下有一个merges目录。我们以一个实例来讲解:
1) 修改www\css目录下的index.css文件,设置event.received的样式为红色: background-color:#FF0000;
2) 修改platforms\android\assets\www\css中的index.css文件,设置.event.received的样式为蓝色:background-color:#0000FF;
3) 在merges\android目录下新建一个css目录。
复制www\css中的index.css文件到该目录下。
修改该目录下的index.css文件中的.event.received的样式为绿色:background-color:# 00FF00;
仿真器中运行,你会发现最终呈现的结果为绿色。由此我们可知:
1) Merges目录中没有对应文件时,platform下的文件会被跟目录(www)下的文件覆盖。(即:如果Merges目录中不存在index.css文件,最终颜色将为红色)
2) Merges目录中存在对应文件时,platform下的文件会被merges下的文件覆盖。可见Merges目录主要用于为平台定制功能。
帮助命令
通过以下命令查看帮助信息:
cordova help
更新命令
以下语句更新cordova:
npm update -g cordova
cordova更新完成后,你还需要更新项目:
cordovaplatform update android
注意:
因为各版本之间差异较大,执行更新时请事先仔细阅读官方文档,以免发生数据丢失或错误。

HTTPS证书生成方式

1.下载openssl的相关工具包。
2.使用以下命令生成相关https证书
如你的网站是example.com
openssl genrsa -out example.com.key 2048
openssl req -new -x509 -key example.com.key -out example.com.cert -days 3650 -subj /CN=example.com
注:本例子是在linux下测试。
在原来配置下新增如下配置则可:
ssl on;
ssl_certificate vhosts/kxtry.com.cert;
ssl_certificate_key vhosts/kxtry.com.key;

更复杂一点的配置如下:
nginx配置如下

找出当前目录的磁盘空间占用

1.列出当前目录下各子目录的磁盘占用:
ls|awk '$0'|xargs du -shdu -h --max-depth=1
2.列出当前目录下文件的大小:
ls -lhll -h
3.磁盘占用:df -h

cd / && ls|awk '$0'|xargs du -sh
clear && df -h && cd / && du -h --max-depth=1

4.列出已经删除但依旧没有释放的文件。
lsof|grep deleted

批量杀死特定进程

例如要杀死phantomjs的父进程为1的进程。
ps -ef |grep phantomjs| awk ‘$3==1 {print $2}’ | xargs kill -9

使用时,可以拆解上述命令,观察其最终删除了那些进程,如下。
1.ps -ef |grep phantomjs
2.ps -ef |grep phantomjs| awk ‘$3==1 {print $2}’

批量部署scrapy爬虫

1.首先安装scrapyd。
2.在爬虫scrapy.cfg文件中,清加如下列表:

[deploy:s158] #冒号隔开。
url = http://192.168.1.158:6800/

[deploy:s161]
url = http://192.168.2.161:6800/

[deploy:s88]
url = http://10.199.3.88:6800/

3.在与scrapy.cfg同级目录下建立任意py文件,如depoy.py文件,在其添加如下代码。

# -*- coding: utf-8 -*-
import os

project = os.path.dirname(__file__)
project = os.path.basename(project)
hosts = ['s158', 's161', 's88']
for it in hosts:
command = 'scrapy deploy %s -p %s' %(it, project)
os.system(command)

———————————————-

sh脚本:
#!/bin/sh

# you should modify some parameter below.

project='webproxy'

# hosts' string are from scrapy.cfg file at the same directory.
hosts="s2 s254 s102"

# ---------------------------------------------
# code body.
path=$(dirname $(readlink -f $0))
prjdir="$path/$project"

if [ ! -d "$prjdir" ]; then
echo ""
echo "can't find the path like ${prjdir}."
echo "make sure the spiders were done in this path."
echo ""
exit
fi

echo ""
echo "----"
echo "ready to deploy '$project' to [$hosts]"
echo "----"
echo ""

read -p "Do you want to continue [Y/N]?" answer
case $answer in
Y | y)
echo ""
for it in $hosts
do
scrapy deploy $it -p $project
done
;;
*)
echo ""
echo "nothing to do, good bye!!"
;;
esac
echo ""
echo ""

磁盘挂载

在阿里云购买了个数据盘,需要挂载,但发现网上的方法太混乱了,于是把验证有效的方法转载如下:

转:

1. 虚拟机设置添加,选择硬盘添加

2. 首先为磁盘创建文件系统:mkfs.ext3 /dev/sdb

3. 创建挂载点:mkdir /mnt/sdb

4. 挂载:mount /dev/sdb /mnt/sdb

5. fdisk -l

    发现有问题:

    Disk /dev/sdb doesn’t contain a valid partition table

6. fdisk /dev/sdb

跟着向导一步步做下去(如果不知道该输入什么,就输入“m”并回车,可以打印出菜单):

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

(后面的菜单省略,太长了)

这里我们要添加一个新的分区,所以输入“n”

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-14098, default 1): (此处直接回车)

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-14098, default 14098): (此处直接回车)

Using default value 14098

Command (m for help): p

Disk /dev/sdb: 115.9 GB, 115964116992 bytes

255 heads, 63 sectors/track, 14098 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1       14098   113242153+  83  Linux

现在可以写入分区表了,所以输入“w”

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

现在再fdisk -l,结果正常

eclipsecpp从可执行程序员中导入源代码并调试

如果寻找跨平台IDE及调试环境,那eclipse是最佳选择了,因为它有一项超强功能:可以从可执行程序员导入源代码并调试程序,这种特性是非常适合自定义MakeFile项目,不需要改变项目现有结果,即可自由开发和调试了。
导入源码方式很多,
1.project explorer面板,右键菜单选择import菜单项。
2.在import对话框里选择c/c++,在展开的子选择项中选择c/c++ executable,然后点击下一步。
3.选择包含调试信息的可执行程序,然后下一步,再点击完成,这时会自动弹出调试信息配置框。
4.在这个调试配置框内,可以配置gdb版本以及环境变量等。
本人使用的是eclipse-cpp4.4 luna版本,操作系统是centos5.8

三种标准库链接方式

Linux 应用程序因为 Linux 版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行。
1.Linux 下标准库链接的三种方式(全静态 , 半静态 (libgcc,libstdc++), 全动态)及其各自利弊。
2.Linux 下如何巧妙构建 achrive(*.a),并且如何设置链接选项来解决 gcc 比较特别的链接库的顺序问题。
全静态:
1.-static -pthread -lrt -ldl
2.不会发生应用程序在 不同 Linux 版本下的标准库不兼容问题。
3.生成的文件比较大,应用程序功能受限(不能调用动态库等)
全动态
1.-pthread -lrt -ldl
2.生成文件是三者中最小的
3.比较容易发生应用程序在不同 Linux 版本下标准库依赖不兼容问题。
半静态 (libgcc,libstdc++)
1.-static-libgcc -L. -pthread -lrt -ldl
2.灵活度大,能够针对不同的标准库采取不同的链接策略,从而避免不兼容问题发生。
3.结合了全静态与全动态两种链接方式的优点。
4.比较难识别哪些库容易发生不兼容问题,目前只有依靠经验积累。
5.某些功能会因选择的标准库版本而丧失。

Linux 静态库链接顺序问题及解决方法:
正如 GCC 手册中提到的那样:
It makes a difference where in the command you write this option; the linker
searches and processes libraries and object files in the order they are specified.
Thus, ‘ foo.o -lz bar.o ’ searches library ‘ z ’ after file ‘ foo.o ’ but before
‘ bar.o ’ . If ‘ bar.o ’ refers to functions in ‘ z ’ , those functions may not be loaded.
为了解决这种库链接顺序问题,我们需要增加一些链接选项 :
$(CXX) $(LINKFLAGS) $(OBJS) -Xlinker “-(” $(LIBS) -Xlinker “-)” -o $@
通过将所有需要被链接的静态库放入 -Xlinker “-(” 与 -Xlinker “-)” 之间,可以是 g++ 链接过程中, 自动循环链接所有静态库,从而解决了原本的链接顺序问题。
涉及链接选项:-Xlinker
-Xlinker option
Pass option as an option to the linker. You can use this to supply system-specific
linker options which GCC does not know how to recognize.