美文网首页
速查手册

速查手册

作者: jiangling500 | 来源:发表于2019-01-26 18:27 被阅读0次

Linux命令

查看所有状态的TCP连接

注意:在Ubuntu下要加sudo才可以看到所有的TCP连接。

netstat -antp
ss -antp

查看正在监听的TCP连接

netstat -lntp
ss -lntp

解压缩

tar zxvf

启动/停止/重启vsftpd服务

service vsftpd start
service vsftdp stop
service vsftpd restart

在命令行上访问网页

curl localhost

which和whereis

which:在PATH变量指定的路径中搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
whereis:只能用于程序名的搜索,而且只能搜索二进制文件、man说明文件和源代码文件。

查看进程

ps -ef
ps aux

抓包

# -nn表示不解析抓包中的域名(即不反向解析)、协议以及端口号
tcpdump -i any 'tcp port 8888' -XX -nn -vv
tcpdump -i any 'src host 127.0.0.1 and tcp src port 12345' -XX -nn -vv

注意:在指定端口的时候,要指定是tcp的,还是udp的。

nc

nc -l 127.0.0.1 8888 # 在8888端口监听
nc 127.0.0.1 8888 # 使用操作系统分配的随机端口连接到127.0.0.1:8888
nc -p 12345 127.0.0.1 8888 # 指定用端口12345连接到127.0.0.1:8888

利用nc传文件,注意这里要记住的是接收文件的是服务器端,发送文件的是客户端:

nc -l ip地址 端口号 > 接收的文件名 #服务器端命令
nc ip地址 端口号 < 发送的文件名 # 客户端命令

使用lsof命令查看TCP连接

lsof -i -Pn

pstack

pstack pid

telent

telnet 127.0.0.1 8888

host

host localhost

route

route add 10.10.98.18 gw 127.0.0.254

利用grep查找结构体、宏等定义

grep -r "struct timeval {" /usr/include -n

利用vim打开文件时定位到指定行号

vim test.txt +n 12

wc命令统计行数

ss -antp | wc -l

从标准输入读取并重定向

cat > test.txt

注意:按Ctrl+D结束输入。

svn

svn co 路径
svn co 路径 -r 版本号 
svn up
svn up -r 版本号
svn log > log.txt
svn cleanup

git

git checkout 路径 # 检出
git pull # 更新到最新版

Python

命令行

import sys
sys.argv[1]
sys.argv[2]

Python网络编程API

from socket import *
from select import *

server = socket(AF_INET, SOCK_STREAM) # 注意:没有第三个参数
server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
server.bind(('', 12345)) # bind方法只接受一个参数
server.listen(5)
client, address = server.accpet() # 此处会阻塞,此时可以用nc连接上来

client.recv(1024) # 此处会阻塞

epoll = epoll()
epoll.register(client.fileno(), EPOLLIN) # register方法第二个参数不写的话,默认为EPOLLIN
epoll.poll(60) # 此处会阻塞,返回时会打印[(4, 1)],表示第4号文件可读(EPOLLIN == 1)

client.recv(1024) # 因为执行到这里,表示已经有数据可读了,不会阻塞

client.setblocking(0) # 设置成非阻塞
client.recv(1024) # 没有数据可读,立即返回,返回错误码EAGAIN == 11

epoll.modify(client.fileno(), EPOLLOUT) # 修改感兴趣事件

epoll.unresigter(client.fileno()) # 取消监听
client.close() # 关闭文件描述符

网络编程

TCP三次握手与四次挥手

TCP三次握手与四次挥手.png

TCP选项

IPPROTO_TCP

  • TCP_NODELAY
  • TCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNT

SOL_SOCKET

  • SO_REUSEADDR
  • SO_REUSEPORT
  • SO_KEEPALIVE
  • SO_SNDBUF
  • SO_RCVBUF
  • SO_SNDTIMEO
  • SO_RCVTIMEO
  • SO_LINGER(struct linger)

TCP报文头部

TCP报文头部.png

Linux API

Linux时间函数

Linux的计时函数,用于获取当前时间:

  • time(2)/time_t(秒)
  • ftime(3)/struct timeb(毫秒)
  • gettimeofday(2)/struct timeval(微秒)
  • clock_gettime(2)/struct timerspec(纳秒)

getaddrinfo

// 监听套接字的创建
int s = -1, rv;
struct addrinfo hints, *servinfo, *p;
bzero(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;

if (0 != (rv = getaddrinfo(NULL, "12345", &hints, &servinfo))) // 第一个参数为域名或者字符串形式的IP地址,第二个参数为服务名或者字符串形式的端口号
{
  fprintf(stderr, "getaddrinfo: %s", gai_strerror(rv));
  return -1;
}
for (p = servinfo; p != NULL; p = p->ai_next) // 域名可能对应多个IP地址
{
  if (-1 == (s == socket(p->ai_family, p->ai_socktype, p->ai_protocol)))
  {
    continue;
  }
  if (0 != (rv = listen(s, 5)))
  {
    perror("listen");
    return -1;
  }
  goto end;
}

end:
freeaddrinfo(servinfo);

设置O_NONBLOCK和CLOEXEC

// non_block
int flags = fcntl(sockfd, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, flags);

// cloexec
int flags = fcntl(sockfd, F_GETFD, 0);
flags |= FD_CLOEXEC;
fcntl(sockfd, F_SETFD, flags);

Linux结构体

addrinfo

struct addrinfo {
    int                        ai_flags;
    int                        ai_family;
    int                        ai_socktype;
    int                        ai_protocol;
    socklen_t            ai_addrlen;
    struct sockaddr *ai_addr;
    char                    *ai_canonname;
    struct addrinfo  *ai_next;
};

pollfd

struct pollfd
{
    int fd;         /* file descriptor */
    short events;   /* requested events */
    short revent;   /* returned events */
};

epoll_event

typedef union epoll_data
{
    void *ptr;
    int fd;
    uint32_t u32;
    uint64_t u64;
} epoll_data_t;

struct epoll_event
{
    uint32_t events;   /* Epoll events */
    epoll_data_t data; /* User data variable */
};

linger

struct linger
{
    int l_onoff;  // 0:off,非0:on
    int l_linger; // linger time
};

timespec

struct timespec {
    time_t tv_sec; // 秒
    time_t tv_nsec; // 纳秒
};

itimerspec

struct itimerspec {
    struct timespec it_interval; // 间隔
    struct timespec it_value; // 首次到期时间
};

tm

struct tm {
    int tm_sec;    /* Seconds (0-60) */
    int tm_min;    /* Minutes (0-59) */
    int tm_hour;   /* Hours (0-23) */
    int tm_mday;   /* Day of the month (1-31) */
    int tm_mon;    /* Month (0-11) */ // +1
    int tm_year;   /* Year - 1900 */ // +1900
    int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
    int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
    int tm_isdst;  /* Daylight saving time */
};

timeval

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

杂项

秒、毫秒、微秒和纳秒

  • 秒(second):s
  • 毫秒(millisecond):ms
  • 微秒(microsecond):us
  • 纳秒(nanosecond):ns

Mac配置

使用homebrew安装/更新软件

brew install git # 安装
brew uninstall git # 卸载
brew upgrade git # 更新

Mac配置多个Java版本

https://segmentfault.com/a/1190000013131276

Apache

sudo apachectl start # 启动Apache
sudo apachectl stop # 停止Apache
sudo apachectl restart # 重启Apache

Apache服务器默认的web根目录在:/Library/WebServer/Documents,在该文件目录下的文件,所有用户都可以进行访问。

安装MySQL

https://www.jianshu.com/p/07a9826898c0

常用连接

Ubuntu安装MySQL

https://www.cnblogs.com/zhuyp1015/p/3561470.html

相关文章

  • 速查手册

    Linux命令 查看所有状态的TCP连接 注意:在Ubuntu下要加sudo才可以看到所有的TCP连接。 查看正在...

  • Objective-C 与Swift代码转换速查手册

    Objective-C 与Swift代码转换速查手册

  • web

    手册: javascript在线速查手册 极客战记 - 学编程 用玩的 http://www.softwhy.co...

  • Swift 语法速查手册

    Swift3.0语法速查手册Using Swift with Cocoa and Objective-CApple...

  • 《开发者头条》每日精选(7-5)

    Linux 工具速查手册 linuxtools-rst.readthedocs.org from@WapeYang...

  • Linux题目和简要速查

    发现了一个写的很不错的速查手册,里面的一些内容很有帮助生信人的自我修养:Linux命令速查手册 - 知乎 (zhi...

  • Angular

    TypeScript 速查手册 https://www.w3cschool.cn/typescript/types...

  • MySQL 速查手册

    MySQL 管理MySQL的命令 show databases; 列出DBMS的数据库列表 use databas...

  • Vim 速查手册

    一、移动光标 字符级 单词级 PS:所谓“单词”,是按照英文的书写和使用习惯来定义的。用在中文上,一般就会以标点符...

  • emacs 速查手册

    Emacs 是一个历史悠久的文本编辑器(最初版本发布于 1976 年)。它的核心是一个 Emacs Lisp(Li...

网友评论

      本文标题:速查手册

      本文链接:https://www.haomeiwen.com/subject/itpijqtx.html