Mac软件之iTerm2

本来,在Mac下我一直是在用的原生的terminal,倒也是没什么感觉凑合用了几年。不知是最近住处的网络还是国内的网络不稳定,老是断连,搞得各种郁闷。于是乎又是改配置啦sshd_config配置握手时间,用screen命令保存状态什么的,然后就用上了iTerms了。也是用了一两个星期了,看到文章才发现原来有这么多好的功能。

最主要的还是口水它的屏幕切割功能,配合linux的screen命令+alias之后简直神器再临人间。

下文转载自《iTerm2新手应知特色功能》- 阳志平的网志


shell入门

这篇文章主要是网上搜集整理的资料,在shell的在平时使用中需要的最基本的入门知识,没有涉及grep、sed、awk以及各种正则表达式。

hello world

#!/bin/bash 
echo Hello World

脚本写完之后在shell中运行


Linux命令之netstat命令和一些 TCP 知识

在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。 Netstat是是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

格式

该命令的一般格式为 :
netstat [-a][-e][-n][-o][-p Protocol][-r][-s][Interval]
命令中各选项的含义如下:
  
-a 显示所有socket,包括正在监听的。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,再加上-e,内容便和ifconfig一样。
-n 禁用反向域名解析,加快查询速度
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。
-l 只列出监听中的连接.(LISTEN)
-p 选项查看进程信息
-g 会输出 IPv4 和 IPv6 的多播组信息。

debian登陆信息修改

一般我们ssh登陆debian会出现以下的信息。

Linux kelu.org 3.18.1-x86_64-linode50 #1 SMP Tue Jan 6 12:14:10 EST 2015 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jan 15 23:16:37 2015 from xxx.xxx.xxx.xxx

备份你的Linux ——tar 打包和 rsync 同步

做好系统备份对系统管理员来说是件很重要的事情。可使用两种方法进行备份系统。一种是直接打tar包备份,另一种是使用增量备份工具,下面我来记录一下。

1. tar打包备份

tar打包备份很简单,就是一条tar命令。为了增强备份文件的可读性,我们将备份的时间设置为备份文件名。

#!/bin/bash

function bksys() {
    filename=`date --date="-24 hour" +%Y-%m-%d_%H-%M`;
    tar cvpzf /kelu/Backup/$filename.tar.gz --exclude=/proc --exclude=/tmp --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/kelu/Backup/ --exclude=/pub /;
}

bksys 2>&1 | tee -a /var/log/bksys.log

其中tar的-p的意思在man中的解释是: -p 恢复字段到它们的原始方式,忽略现有的用户权限屏蔽位(umask)。 setuid、setgid 和 tacky 位许可权也恢复给拥有 kelu 用户权限的用户。这个标志恢复文件到其原始方式,但不恢复目录到其原始方式。

意思也就是说打包时保持该文件夹的相关属性,使解压的时候得以恢复。

2. rsync备份

rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备份,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效。

安装

debian安装使用apt-get install rsync安装。有的是系统自带的,自带的话就自己建好文件夹/etc/rsyncd,在文件夹里添加几个文件rsyncd.motd rsyncd.password rsyncd.secrets。 这三个文件的内容分别是:

YUKI.N> cat rsyncd.motd
+++++++++++++++++++++++++++
+     kelu.org  2015      +
+++++++++++++++++++++++++++
YUKI.N> cat rsyncd.password
12345678
YUKI.N> cat rsyncd.secrets
kelu:12345678

secrets和password的权限必须设为600,不然备份时候也会提醒也会拒绝备份= = secrets是用户密码文件,password是为了方便自动化备份时的密码文件。交互式地备份的话会提醒你输入密码。

配置

配置rsyncd.conf

# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
port = 873
# 你的IP地址!
address = 12.34.56.78 
#uid = nobody
#gid = nobody
uid = kelu
gid = kelu

use chkelu = yes
read only = yes

#limit access to private LANs 注意要把自己的IP添加进去!
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 
hosts deny=*

max connections = 5
# motd文件,欢迎语来着,在里面随便写点东西。当用户登录时会看到这个信息。
motd file = /etc/rsyncd/rsyncd.motd

#This will give you a separate log file
log file = /var/log/rsync.log

#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

# 模块定义啦
[模块名称]
path = /
list=yes
ignore errors
auth users = kelu
secrets file = /etc/rsyncd/rsyncd.secrets
comment = YUKI.N>
exclude = proc/ tmp/ lost+found/ mnt/ sys/ kelu/Backup/ pub/

在你的Debian上连接到Github

整个过程都是参考的github的官方文档。在这稍微做一个记录。

$ apt-get install git
$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"
$ ssh-keygen -t rsa -C "YOUR EMAIL ADDRESS"

将你的公钥添加到github上。

$ ssh-agent bash
$ ssh-agent -s
$ ssh-add ~/.ssh/id_rsa
$ ssh -T git@github.com

写出健壮的 Bash 脚本

原文来自 开源中国社区

许多人用shell脚本完成一些简单任务,而且变成了他们生命的一部分。不幸的是,shell脚本在运行异常时会受到非常大的影响。在写脚本时将这类问题最小化是十分必要的。本文中我将介绍一些让bash脚本变得健壮的技术。

##使用set -u

你因为没有对变量初始化而使脚本崩溃过多少次?对于我来说,很多次。


1 2 3 4 5 88 89 90 91 92