Linux虚拟内存相关设置

1. 临时增加或减少虚拟内存

首先,创建一个指定大小的文件。例如创建一个大小为 200G 的文件

# dd if=/dev/zero of=swapadd1 bs=4096 count=52428800

然后,将该文件加入到交换分区

# mkswap swapadd1
# swapon swapadd1

关闭某一个文件指向的虚拟内存

# swapoff -v swapadd1

2. 设置虚拟内存开始利用的阈值

在CentOS8系统中,当物理内存使用量达到80%时,则开始使用虚拟内存。若想优先全部使用物理内存,当100%使用完毕物理内存后,才开始使用虚拟内存,则可以进行如下设置:

# sysctl vm.swappiness=0
# cat /proc/sys/vm/swappiness

3. 释放虚拟内存

有时候发现物理内存剩余很多,而需您内存使用了不少。这时可以使用以下命令来将虚拟内存数据转移到物理内存,并关闭虚拟内存:

# swapoff -a

然后再重新启用虚拟内存:

# swapon -a

邮件服务器的简单搭建

1. 邮件服务器域名解析

首先,我在万网上解析域名如下:

记录类型    主机记录    记录值
A           mail        115.29.105.12
MX          @           mail.chenlianfu.com
TXT         @           v=spf1 a mx -all

2. CentOS postfix 设置

然后修改 CetnOS 系统下的 PostFix 的配置文件 /etc/postfix/main.cf , 修改的内容如下:

myhostname = mail.chenlianfu.com
mydomain = chenlianfu.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, 168.100.189.0/28, hash:/etc/postfix/access
relay_domains = $mydestination
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
message_size_limit = 52428800

然后运行如下命令启动 Postfix 服务:

# postmap hash:/etc/postfix/access 
# postalias hash:/etc/aliases
# /etc/init.d/postfix check
# /etc/init.d/postfix restart
# 

3. 使用 mail 命令发送邮件

mail命令参数:

-s subject
    邮件的标题。若标题有空格,则需要使用引号。
-a attachment
    将目标文件作为附件发送。若有多个附件需要发送,则使用多个该参数。
-c address
    抄送副本到邮件地址列表。这些邮件地址使用逗号分隔。抄送的邮件地址和收件人地址能
被所收件地址看到。
-b address
    暗送的邮件地址列表。这些邮件地址使用逗号隔开。暗送的邮件地址不能被其收件地址看
到。故mail命令不能将邮件分别发送到邮件地址列表。

使用例子:

$ mail -s "a e-mail subject" -a ./test.tar.gz chenllianfu@foxmail.com < mail_content
$ cat mail_content | mail -s "a e-mail subject" -a ./test.tar.gz chenllianfu@foxmail.com
$ echo "mail_content" | mail -s "a e-mail subject" -a ./test.tar.gz chenllianfu@foxmail.com
$ mail -s "a e-mail subject" -a ./test.tar.gz chenllianfu@foxmail.com
input
EOT

FileZilla在CentOS系统上的安装

由于编译或使用新版本需要高版本的 GCC 和 wxWidgets,因此,不推荐使用新版本的 FileZilla。Fileilla 官网仅提供了最新版本的下载链接。可以到sourceforge上下载旧版本。

$ wget http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.5.3/FileZilla_3.5.3_x86_64-linux-gnu.tar.bz2
$ tar jxf FileZilla_3.5.3_x86_64-linux-gnu.tar.bz2 -C /opt/
$ echo 'PATH=$PATH:/opt/FileZilla3/bin/' >> ~/.bashrc
$ source ~/.bashrc 
$ filezilla

磁盘IO检测工具 iostat 的简单使用说明

1. iostat 的常用例子和常用参数

iostat 的常用例子:

$ iostat -c -d 1 10
$ iostat -c -x -m 1 10
$ iostat -c -x /dev/sda /dev/sdb 1 10
上个命令表示对 /dev/sda 和 /dev/sdb 两个磁盘进行 I/O 统计,每秒统计一次,共统计10次。

iostat 的常用参数:

-c
    显示 CPU 的使用情况
-d
    显示设备的使用情况
-x
    显示扩展统计数据。若设置了 -x 参数,则 -d 参数失效
-k
    使用 Kb 作为单位
-m
    使用 Mb 作为单位

2. iostat 使用注意事项

1. 需要进行多次统计,多次统计的结果是实时的结果。

2. 使用 -c 参数能得到 CPU 的使用统计。 %iowait 表示系统有 I/O request 的 CPU 空闲时间。

3. 使用 -d 参数,其统计结果中 tps(the number of transfers per second) 表示设备每秒的传输次数。

4. 使用 -x 参数, %util 表示磁盘使用率,即处理 I/O request 的时间的比率。该值接近 100%,表明 I/O 成了瓶颈。若此时 CPU 的使用率比预期低,则表示磁盘性能不够,导致 CPU 不能充分利用。

使用 lftp 进行 FTP 数据下载和上传

1. lftp 简介

适合于 FTP 操作的命令和软件比较多。 linux 下操作命令有 ftp, lftp 和 sftp; 图形化界面非常好用的有 FileZilla。 为了便于在服务器上使用命令行来进行便捷的 FTP 操作,我个人喜欢使用 lftp 。

2. lftp 的使用

lftp 的简单例子:
比如,下载测序公司释放的数据:

从诺和致源公司 FTP 站点 ftpdata.novogene.cn 以用户名 Novo_s4VcJc 密码 dpdATZ77 端口 2300 下载测序释放的数据:
$ lftp -e "get -c data/species.reads1.fq.gz; exit" \
  -u Novo_s4VcJc,dpdATZ77 -p 2300 ftpdata.novogene.cn

比如,上传测序原始数据到 NCBI 的 SRA FTP 站点:

$ lftp -e "put raw_data.reads1.fastq; exit" \
  -u sra,VfOiVJn1 -p 21 ftp-private.ncbi.nih.gov

lftp 的参数:

-f file
    执行该文件中的 FTP 命令,执行完毕后退出。
-c cmd
    将 FTP 命令直接写入到该参数后,执行其中的命令后退出。

-u user[,passwd]
    通过该参数输入用户名,同时可以选择输入密码。
-p port
    设置端口。默认为 21。
-e cmd
    在 lftp 命令后给出 FTP 位点, -u 和 -p 参数登录 FTP 后,再执行该参数后的 FTP 命令。 

3. 常用的 FTP 命令

直接在终端中输入 lftp 命令后,进入了 lftp 的操作界面,从而可以使用 FTP 命令进行操作了。

1. open

用于连接 FTP 站点,用法为:

open [-e cmd] [-u user[,pass]] [-p port] host|url

2. pwd 和 lpwd

进入 FPT 站点后, pwd 命令用于显示服务器端的当前工作目录; lpwd 用于显示本地机器上的当前工作目录。

3. ls 和 !ls

进入 FPT 站点后, ls 命令用于列出服务器端的目录内容; !ls 用于列出本地机器上的目录内容。

4. cd 和 lcd

进入 FPT 站点后,cd 命令用于在服务器端切换路径; lcd 用于在本地机器上切换路径。

5. pget

用于从 FTP 上下载数据。该命令能使用多个连接下载数据,从而加大下载速度,但是会增大服务端和网络的负载。用法和参数为:

pget [OPTS] rfile [-o lfile]
-c
    支持续传
-n int
    设置最大的连接数

6. get 和 mget

用于从 FTP 上下载数据。 get 用于下载一个文件, mget 用于下载多个文件。 用法和参数如下:

get [-E] [-a] [-c] [-O base] rfile [-o lfile] ...
mget [-c] [-d] [-a] [-E] [-O base] files

-c
    支持断点续传。
-E
    成功下载后,删除服务器端的数据
-a
    使用 ascii 模式下载,默认为二进制模式下载
-d
    创建和下载文件名一致的文件夹,并将文件保存到文件夹中
-O string
    指定下载文件存放的路径
-o string
    将 get 命令下载数据的数据保存到此文件中

7. put 和 mput

用于将数据上传到服务器端。put用于上传一个文件,mput用于上传多个文件。用法和参数为:

put [-E] [-a] [-c] [-O base] lfile [-o rfile]
mput [-c] [-d] [-a] [-E] [-O base] files

参数和 get/mget 参数一致。

8. mirror
用于将目标文件夹全部下载到指定目录中。其用法和参数如下:

mirror [OPTS] [source [target]]

mirror 的常用参数:
-c
    支持断点续传
-R
    反向 mirror,即将本地文件上传到服务器端
--parallel=N
    同时并行下载 N 个文件
--use-pget=N
    对每个文件使用 pget 下载,并设置 pget 的连接数。

使用Aspera从NCBI或EBI高速下载数据

1. Aspera简介

Aspera提供了大文件高速传输方案,适合于大数据的传输。客服端的使用是免费的。

2. Aspera下载和安装

Aspera下载网页: http://downloads.asperasoft.com/connect2/

$ wget http://d3gcli72yxqn2z.cloudfront.net/connect/bin/aspera-connect-3.5.1.92523-linux-64.tar.gz
$ tar zxf aspera-connect-3.5.1.92523-linux-64.tar.gz
$ sh aspera-connect-3.5.1.92523-linux-64.sh
$ echo 'PATH=$PATH:~/.aspera/connect/bin/' >> ~/.bashrc
$ source ~/.bashrc
$ ascp --help

软件安装在 ~/.aspera/connect/ 目录下。

3. Aspera 的使用

例子,使用 Aspera 高速下载 NCBI或 EBI 上的数据:

$ ascp -T -l 200M -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
  --host=ftp-private.ncbi.nlm.nih.gov --user=anonftp --mode=recv \
  /sra/sra-instant/reads/ByRun/sra/ERR/ERR105/ERR105009/ERR105009.sra ./
$ ascp -T -l 200M -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
  anonftp@ftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/ERR/ERR105/ERR105009/ERR105009.sra ./

$ ascp -T -l 200M -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
  --host=fasp.sra.ebi.ac.uk --user=era-fasp --mode=recv \
  /vol1/fastq/ERR105/ERR105009/ERR105009_1.fastq.gz ./
$ ascp -T -l 200M -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
  era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/ERR105/ERR105009/ERR105009_1.fastq.gz ./

Aspera 的用法和简单参数:

Aspera的用法:
$ ascp [参数] 目标文件 目的地址

Aspera的常用参数:
-T
    不进行加密。若不添加此参数,可能会下载不了。
-i string
    输入私钥,安装 aspera 后有在目录 ~/.aspera/connect/etc/ 下有几个私钥,使用 linux 服务器的时候一般使用 asperaweb_id_dsa.openssh 文件作为私钥。
--host=string
    ftp的host名,NCBI的为ftp-private.ncbi.nlm.nih.gov;EBI的为fasp.sra.ebi.ac.uk。
--user=string
    用户名,NCBI的为anonftp,EBI的为era-fasp。
--mode=string
    选择模式,上传为 send,下载为 recv。
-l string
    设置最大传输速度,比如设置为 200M 则表示最大传输速度为 200m/s。若不设置该参数,则一般可达到10m/s的速度,而设置了,传输速度可以更高。

PostGreSQL 数据库的简单使用

1. PostGreSQL 简介

PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
有人将 PostgreSQL 和 MySQL 作了比较, PostgreSQL 貌似完胜。

2. PostGreSQL 的安装

# yum install postgres*
# /etc/init.d/postgresql start       启动数据库,第一次启动则会初始化数据库。

3. PostGreSQL 的简单使用

参考自: PostgreSQL 8.1 中文文档

3.1 登录 PostGreSQL 的命令

使用 psql 命令登录 PostGreSQL 数据库。
初始化 PostGreSQL 数据库后,则会有名为 postgres 和 tempalte1 的数据库,有一个名为 postgres 的用户,无密码登录。
例如,使用 postgres 用户登录 postgres 数据库

$ psql postgres postgres
psql (8.4.18)
Type "help" for help.

postgres=#

psql的用法与常用参数:

psql [options] [DBNAME [USERNAME]]

DBNAME
    设置要登录的数据库,默认为当前系统用户名
USERNAME
    设置登录数据库的用户,默认为当前系统用户名
-h | --host=HOSTNAME
    设置连接的服务器名,default: localhost
-p | --port=PORT
    设置端口, default: 5432
-U | --username=USERNAME
    设置登录的用户名,默认为当前系统用户名

3.2 简单常用的 postgresql 命令行

登录 postgresql 数据库后,提示符以登录的数据名加等于号表示。此时,可以输入 postgresql 命令行用于辅助数据库操作。这些命令行以 \ 开头。几个简单常用的命令如下:

\c[onnect] DBNAME
    切换数据库
\l[+]
    列举数据库
\dt
    列举表
\d TABLENAME
    查看表的结构
\q
    退出 postgresql
\cd [DIR]
    切换 linux 系统的工作目录
\! [COMMAD]
    执行 linux 系统命令。比如 \! ls --color 用于打印出当前目录的文件名; 但是 \! cd 命令无效。
\?
    展示所 postgresql 的命令行帮助文档
\h CREATE ROLE
    \h 为查看 SQL 命令的帮助信息,以上命令为查看 CREATE ROLE 命令的详细帮助。

3.3 简单常用的 SQL 命令

使用 SQL 语言对 postgresql 的数据库和表进行操作,初学者需要的 SQL 命令:

CREATE DATABASE chado
    创建名为 chado 的数据库
DROP DATABASE chado
    删除名为 chado 的数据库
CREATE ROLE chenlianfu [PASSWORD '123456']
    创建名为 chenlianfu 的用户
DROP ROLE chenlianfu
    删除名为 chenlianfu 的用户

3.4 PostGres 的 linux 命令

在 linux 终端下,可以使用一些命令来操作 PostGres 数据库。

createdb
    创建数据库
createlang
    给数据库安装语言
createuser
    用户创建用户
dropdb
    删除数据库
droplang
    从数据库删除语言
dropuser
    删除用户
initdb
    初始化数据库
pg_dump
    将数据库转换为文本文件,用于备份

使用 ssh 代理

1. ssh 代理的好处

若用户有一台服务器,该服务器网络速度快,或是可以正常访问国外网站的国外主机。则可以以此服务器为跳板,通过 ssh 代理来快速访问网络内容,或翻墙访问国外网页。

2. ssh 代理设置

此方法是在使用 linux 系统下的设置,在本地机器运行命令:

$ ssh -qTfnN -D 4241 chenlianfu@122.205.95.116

表示可以通过 IP 为 122.205.95.116 的服务器为跳板,访问网络。

3. firefox 设置

设置代理服务器为 localhost, 端口 4241, socks5 类型,即可使用代理了。

3. sshd 设置保持 ssh 持续连接

修改 /etc/ssh/sshd_config 文件内容:

ClientAliveInterval 60