理解RESTful没有那么难

理解RESTful没有那么难

什么是 RESTful ?

开发Linux运维人员最常用166个命令汇总

Linux运维人员最常用166个命令汇总

命令

功能说明

线上查询、帮助命令(2个)

man

查看命令帮助,命令词典,更复杂还有info,但不常用。

help

查看Linux内置命令的帮助,比如cd等命令。

文件、目录操作命令(18个)

ls

全拼为list,功能是列出目录的内容及其内容属性信息。

cd

全拼为change directory,功能是从当前工作目录切换到指定的工作目录。

cp

全拼为copy,功能为复制文件或目录。

find

查找,用于查找目录及目录下文件。

mkdir

全拼为make directories,其功能是创建目录。

mv

全拼为move,其功能是移动或重命名文件。

pwd

全拼为print working directory,功能是显示当前工作目录的绝对路径。

rename

用于重新命名文件。

rm

全拼为remove,其功能是删除一个或多个文件或目录。

rmdir

全拼为remove empty directories,功能是删除空目录。

touch

创建个空文件,改变已有文件的时间戳属性。

tree

功能是以树形结构显示目录下的内容。

basename

显示文件名或着目录名。

dirname

显示文件或着目录路径。

chattr

改变文件扩展属性。

lsattr

查看文件扩展属性。

file

显示文件类型。

md5sum

计算和校验文件的MD5值。

查看文件、内容处理命令(21个)

cat

全拼为concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。

tac

tac是cat的反向拼写,因此命令的功能为反向显示文件内容。

more

分页显示文件内容。

less

分页显示文件内容,more命令的相反用法。

head

显示文件内容头部。

tail

显示文件内容尾部。

cut

将文件的每一行按指定分隔符分割并输出。

split

分割文件为不同的片段。

paste

按行合并文件内容。

sort

对文件的文本内容排序。

uniq

去除掉重复行。

wc

统计文件行数、单词数或是字节数。

iconv

转换文件编码格式。

dos2unix

将DOS格式文件转换成UNIX格式。

diff

全拼为difference,比较文件差异,用于文本文件。

vimdiff

命令行可视化文件比较工具,用于文本文件。

rev

反向输出文件内容。

grep/egrep

常用于过滤字符串。

join

按两个文件的相同字段合并。

tr

替换、删除字符。

vi/vim

命令行文本编辑器。

文件压缩及解压缩命令(4个)

tar

打包压缩。

unzip

解压文件。

gzip

压缩工具。

zip

压缩工具。

信息显示命令(11个)

uname

显示操作系统相关信息。

hostname

显示或者设置当前系统的主机名。

dmesg

显示开机信息,用于诊断系统故障。

uptime

显示系统运行时间以及负载。

stat

显示文件或文件系统的状态。

du

计算磁盘空间使用情况。

df

报告文件系统磁盘空间使用情况。

top

实时显示系统资源使用情况。

free

查看系统内存。

date

显示、设置系统时间。

cal

查看日历、时间信息。

搜索文件命令(4个)

which

查找二进制文件的命令,按环境变量PATH路径查找。

find

从磁盘遍历查找文件或目录。

whereis

查找二进制文件的命令,按环境变量PATH路径查找。

locate

从数据库/var/lib/mlocate/mlocate.db中查找命令,使用updatedb更新库。

用户管理命令(10个)

useradd

添加用户。

usermod

修改系统已经存在用户属性。

userdel

删除用户。

groupadd

添加用户群组。

passwd

修改用户密码。

chage

修改用户密码有效期限。

id

查看用户的uid/gid及归属的用户群组。

su

切换用户身份。

visudo

编辑/etc/sudoers文件的专属命令。

sudo

以另外一用户身份(默认为root用户)执行事先在sudoers文件中允许的命令。

基础网络操作命令(11个)

telnet

用TELNET协议远程登录。

ssh

用SSH加密协议远程登录。

scp

全拼为secure copy,用于不同主机之间复制文件。

wget

用命令行下载文件。

ping

测试主机之间网络的连通性。

route

显示和设置linux系统的路由表。

ifconfig

查看、配置、启用或禁用网络接口的命令。

ifup

启动网卡。

ifdown

关闭网卡。

netstat

查看网络状态。

ss

查看网络状态。

深入网络操作命令(9个)

nmap

网络扫描命令。

lsof

全名为list open files,也就是列举系统中已经被打开的文件。

mail

发送、接收邮件。

mutt

邮件管理命令。

nslookup

查询互联网DNS服务器的命令。

dig

查找DNS的解析过程。

host

查询DNS的命令。

traceroute

追踪数据传输路由状况。

tcpdump

命令行的抓包工具。

有关磁盘与文件系统的命令(16个)

mount

挂载文件系统。

umount

卸载文件系统。

fsck

检查并修复Linux文件系统。

dd

转换、复制文件。

dumpe2fs

导出ext2/ext3/ext4等文件系统信息。

dump

ext2/3/4等文件系统备份工具。

fdisk

磁盘分区命令,适用于2TB以下磁盘分区。

parted

磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。

mkfs

格式化创建Linux文件系统。

partprobe

更新内核的硬盘分区表信息。

e2fsck

检查ext2/ext3/ext4等类型文件系统。

mkswap

创建Linux的交换分区。

swapon

启用交换分区。

swapoff

关闭交换分区。

sync

将内存缓冲区内的数据写入磁盘。

resize2fs

调整ext2/ext3/ext4等文件系统大小。

系统权限、用户授权相关命令(4个)

chmod

改变文件、目录权限。

chown

改变文件、目录的属主和属组。

chgrp

更改文件用户群组。

umask

显示、设置权限掩码。

查看系统用户登陆信息命令(7个)

whoami

显示当前有效用户名称,相当于执行id -un命令。

who

显示目前已登录系统的用户信息。

w

显示已登陆系统的用户列表,并显示用户正在执行的指令。

last

显示已登入系统的用户。

lastlog

显示系统中所有用户最近一次的登录信息。

users

显示当前登录系统的所有用户的用户列表。

finger

查找、显示用户信息。

内置命令、其它(19个)

echo

打印变量,直接输出指定的字符串

printf

将结果格式化输出到标准输出中。

rpm

管理rpm包命令。

yum

自动化简单化地管理rpm包的命令。

watch

周期的执行给定的命令,并将命令的输出以全屏方式显示。

alias

设置系统别名。

unalias

取消系统别名。

date

查看、设置系统时间。

clear

清除屏幕,简称清屏。

history

查看命令执行的历史纪录。

eject

弹出光驱。

time

计算命令执行时间。

nc

功能强大网络工具。

xargs

将标准输入转换成命令行的参数。

exec

调用并执行指令的命令。

export

设置或者显示环境变量。

unset

删除变量、函数。

type

用于判断另外一个命令是否为内置的命令。

bc

命令行科学计算器

系统管理、性能监视命令(9个)

chkconfig

管理Linux系统开机启动项。

vmstat

虚拟内存统计。

mpstat

显示各个可用CPU的状态统计。

iostat

统计系统的IO。

sar

全面地获取系统CPU、运行队列、磁盘读写、分页、内存、 CPU中断和网络性能数据。

ipcs

用于报告Linux中进程间通信设施的状态,显示信息包括消息列表、共享内存和信号量信息。

ipcrm

用来删除一个或更多的消息队列、信号量集或者共享内存标识。

strace

用于诊断、调试Linux用户空间跟踪器。我们用它来监控用户空间进程和内核交互,比如系统调用、信号传递、进程状态变更。

ltrace

命令会跟踪进程库函数调用,它会显现哪个库函数被调用。

关机/重启/注销和查看系统信息的命令(6个)

shutdown

关机。

halt

关机。

poweroff

关闭电源。

logout

退出当前登录的Shell。

exit

退出当前登录的Shell。

Ctrl+d

退出当前登录的Shell的快捷键。

进程管理相关命令(15个)

bg

将一个后台暂停的命令,变成继续执行。

fg

将后台的命令调至前台继续运行。

jobs

查看当前有多少后台运行的命令。

kill

终止进程。

killall

通过进程名来终止进程。

pkill

通过进程名来终止进程。

crontab

定时任务命令。

ps

显示进程快照。

pstree

树形显示进程。

nice/renice

调整程序运行的优先级。

nohup

忽略挂起信号运行指定。

pgrep

查找匹配条件进程。

runlevel

查看系统当前运行级别。

init

切换运行级别。

service

启动、停止、重新启动、关闭系统服务,还可以显示所有系统服务的当前状态。

国外CloudFlare免费CDN加速及防护注册使用教程

国内也有很多免费 CDN 工具,都是需要网站备案后才能使用。网站没有备案的站长可以选择使用国外 CDN 工具,操作起来也没有我们想象的那么麻烦。 cloudflare 是一款免费的 CDN 工具,CloudFlare 可以帮助受保护站点抵御包括拒绝服务攻击(DenialofService)在内的大多数网络攻击,确保该网站长期在线,同时提升网站的性能、访问速度以改善访客体验。 这个教程教大家怎么简单注册和使用 cloudflare。 1,注册登录 cloudflare 这里都是英文界面,但是不难读懂 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第1张 cloudflare 注册教程 2,”add websites”添加网站域名,这里不要带 www 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第2张 3, cloudflare 扫描网站后或自动扫描出 dns 解析条目,可以再额外增加和删除解析。嫌麻烦的就直接点击”continue” 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第3张 4,选择”free plan”,使用免费版本的 cloudflare 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第4张 5,修改 dns 服务国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第5张 如我现在使用的是万网域名,我的域名解析服务器是”dns9.hichina.com”,现在需要将服务器修改为 cloudflare 服务器。 需要到万网后台去修改,这里需要注意的是:不是增加或者修改解析条目,而是修改解析服务器。所以在万网后台选择的是”管理”而不是”解析” 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第6张 国外免费CDN加速及防护:CloudFlare注册使用教程 主机 网站安全 网站运营 站长 建站教程 第7张 6,cloudflare 域名解析服务器 修改解析服务器后大约需要几分钟就能生效。 解析成功后,会显示”status:active” 据网站行业权威人士数据,世界上 90%以上的网站很容易遭受攻击。我们小站更是轻而易举的就会被黑,未雨绸缪防范于未然是每个站长必须考虑的事情,除非你不想把网站做大做强做持久。cloudflare 防止攻击的一个方式就是隐藏网站真实 ip 地址。 在安装 cloudflare 以后仍然遭受攻击,页面经常会出现 508 错误,一个很大的原因就是网站 ip 已经暴露。 这里提醒下大家,如果你网站未做任何防护请行动起来,如果你也要使用 cloudflare,,请先安装软件后再更换服务器,而不是更换服务器后再安装防护软件。也只有做好了防范工作,我们的网站才能长治久安。 原文地址:https://lusongsong.com/reed/1492.html

教你快速撸一个免费HTTPS证书

HTTPS 已成为业界标准,这篇博客将教你申请Let’s Encrypt的免费 HTTPS 证书。 本文的操作是在 Ubuntu 16.04 下进行,使用 nginx 作为 Web 服务器。【蚂蚁号

1. 安装 Certbot

Certbot可以用于管理(申请、更新、配置、撤销和删除等)Let’s Encrypt 证书。这里安装的是带 nginx 插件的 certbot:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y python-certbot-nginx

2. 配置 Nginx

server
{
    listen 80;
    server_name www.v5ant.com;
}

重启 nginx:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.v5ant.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.v5ant.com/privkey.pem
   Your cert will expire on 2018-09-29. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

HTTPS 证书相关的文件在/etc/letsencrypt/目录中:

find /etc/letsencrypt/ -name "*www.v5ant.com*"
/etc/letsencrypt/renewal/www.v5ant.com.conf
/etc/letsencrypt/archive/www.v5ant.com
/etc/letsencrypt/live/www.v5ant.com

certbot 会自动修改 nginx 配置文件:

server
{
    listen 80;
    server_name www.v5ant.com;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.v5ant.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.v5ant.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

参考

Mongo入门-2-基本操作

创建数据库

db.student.insert{
stuid : 1,
stuname : "xxx"
}

删除数据库

sue sdkb
db.dropDatabase()

插入文档

若不存在,插入新文档时会自动创建一个新的集合,再插入.

db.collection.insertOne():向指定的集合插入一条数据
db.collection.insertMany():向指定的集合中插入多条数据12

db.users.insertOne(
{
    name:"sue",
    age:22,
    status:"xxx"
}
)

向users插入多条文档

db.users.insertMany(
[{
name:"zzxb",
age:18,
status:"xxx"
},
{
name:"ilyj",
age:38,
status:"stop"
}
]
)

更新文档

db.collection.update(
<query>,
<update>,
{
    upsert:<boolean>,
    multi:<boolean>,
    writeConcern:<documnet>
}
)

参数说明:

  • query:update的查询条件,类似sql update查询内where后面的
  • update:update的对象和一些更新的操作符号
  • upsert:可选 若不存在update的记录,是否插入objNew,true为插入,默认为false,不插入
  • multi:可选,只更新找到的第一条记录,true:把按条件查出来的多条记录全部更新
  • writeConcern:可选 抛出异常的级别

3.2版本开始 MongoDB提供以下更新集合文档的方法

db.collention.updateOne()
db.collection.updateMany()

范例 将name为zzxb的文档,更新年龄为40

db.user.update(
{"name":"zzxb"},
{$set:{"age":40}}
)

将年龄小于30的文档,更新状态为stop

db.users.update(
{"age":{$lt:30},
{$set:{"status":"stop"}}
}
)

大于小于

  • lt : 小于
  • gt: 大于
  • lte : 小于等于
  • gte : 大于等于
  • ne: 不等于

save语法 save()方法通过传入的文档来替换已有的文档

db.collection.save(
<document>,
{
writeConcern:<document>
}
)
  • document:文档数据
  • writeConcern:可选的,抛出异常的级别

替换id为5a67ea03fd6b999d262bae2c的文文档内容

db.users.save({
    _id:ObjectId("5a67..."),
    name:"myzzxb",
    age:28,
    status:"starting"
})

修改器 通常文档只会有一部分要更细,使用原子性的更新,指定文档的某些字段进行更新 更新修改器是钟特殊的键.用来指定复杂的更新操作:修改,增加 删除,还可能是操作数据或内嵌文档

Mongo入门-1-原理

关系型数据库遵循的ACID

  • A (Atomicity)原子性
  • C (Consisitency)一致性
  • I (Isolation)独立性
  • D (Durability)持久性

为什么使用NoSql

不不能是空字符串串("")。
不不得含有' '(空格)、.、$、/、\和\0 (空字符)。
应全部小小写。
最多64字节。1234

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库

  • admin root数据库,将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限.特定的命令只能够这个数据库运行(列出所有的数据库或关闭服务器)
  • local 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config:当Mongo用于分片设置时,config在内部使用,用于保存分片的相关信息

文档

文档是一组kv(BSON).Mongo的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,与关系型数据库有很大差别,也是MongoDB的特点

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜⻦鸟教程","num":5}123

MongoDB数据类型

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×