Linux 常用命令(3) - 检查网络流量

检查网络流量 tcpdump Tcpdump 是用于捕获发出和收到的网络流量的工具。在日常工作中经常用来检查调试网络问题。它不单能捕获 TCP 流量,也能捕获 UDP、ARP 和 ICMP 流量。 首先,tcpdump 需要 root 权限,所以别忘了用 sudo 来执行。 常用参数及对应的命令组合 -D: 查看所有的网络接口 -i <interface>: 捕获特定网络接口,输出到屏幕 -n: 不反向解析域名。在捕获的记录里,默认情况tcpdump会反向解析所有的IP地址,然后显示域名地址。该参数可以避免这个行为。 -w <file.pcap>: 输出到文件 file.pcap。通常大家会使用.pcap扩展名,表示 packet capture。 在输出到文件的时候,内容是不会输出到屏幕的。如果希望查看,可以打开新的终端,然后使用 tcpdump -r file.pcap 命令查看。 当然,你也可以使用 tcpdump -w file.pcap & 命令。让输出到文件的命令运行在后台。或者使用 -l + tee 命令输出到文件的同时查看。 推荐使用 Wireshark 来分析捕获的流量日志。 -l: 缓存输出,用于输出到屏幕的同时保存到文件。常用命令为 tcpdump -l | tee file.out 或者 tcpdump -l > file.out & tail -f file.out -W 10 -C 200: 当需要运行很长时间并且保存日志的时候,可以指定这两个参数。-C 指定单个文件大小, 单位为MB。-W 文件数量。Tcpdump会自动切分和更新日志。 -A | -X 默认情况下,tcpdump 输出到屏幕时,仅捕获数据包的headers。如果需要检查包信息,可以加上 -A 以ASCII格式输出,或者 -X 以HEX格式输出。 过滤流量 tcpdump使用的是BPF语法用来作为过滤参数,很接近自然语言。比如,只希望捕获端口27017的TCP流量:tcpdump tcp port 27017。以下是常用的组合:...

March 18, 2021 · 3 min · 552 words · Eric Yang

Linux 常用命令(2) - 重定向输出和输入, 查看网络端口, 压缩和解压缩

重定向输出和输入 在 Bash 或者其他Linux shell里,标准的I/O流分为: 0 - stdin 标准输入 1 - stdout 标准输出 2 - stderr 标准错误 从标准输出开始。标准输出是程序正常输出的内容。默认情况下,所有信息都会输出到屏幕上。重定向输出就是捕获程序的输出然后重定向到另一个程序或者文件中。一般用 n> 来实现。n 可以是 0, 1, 或者 2。 省略n 默认为 1 即标准输出。 举个例子, command > file 就是将命令 command 执行的结果输出到文件 file 里。 这个命令也等同于 command 1> file。 同理,command 2> file 就是将命令执行输出到错误重定向到文件里。 如果希望过滤输出,可以重定向到 /dev/null 来实现。比如, command 2> /dev/null,命令执行结果中的错误信息就会被过滤掉。 那么如何将标准输出和标准错误重定向到一个文件里呢? command &> file,& 表示同时将 1 和 2 输出到文件里。 还有一种方式可以实现同样的效果:command > file 2>&1,追加 2>&1 是将命令中的输出错误重定向到标准输出中。 在日常使用中,我们也经常碰到 >> 。不同于 > file 每次执行都会覆盖整个文件, >> 会以追加的方式输出内容到文件。...

March 10, 2021 · 1 min · 212 words · Eric Yang

Linux 常用命令(1) - 检查本地端口, 查看进程, 文件

检查本地端口 netstat 大多数linux系统已经内置了这个命令。如果没有,可以通过以下命令安装: Ubuntu & Debian: sudo apt install net-tools CentOS: sudo yum install net-tools 列出所有在使用的TCP和UDP端口,包括服务名称和 Socket: sudo netstat -tunlp -t - 显示 TCP 端口 -u - 显示 UDP 端口 -n - 直接使用 IP 地址,不通过域名服务器 -l - 仅显示正在监听的端口 -p - 显示正在使用 Socket 的 PID 和程序名称 输出结果示例: $ sudo netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1755/sshd tcp6 0 0 :::22 :::* LISTEN 1755/sshd udp 0 0 0....

March 3, 2021 · 4 min · 771 words · Eric Yang

如何使用 Tmux

Tmux 是什么? Tmux 是终端的多窗口工具,跟 screen 的功能差不多,能够将当前所有窗口的状态保存到session (会话)里并挂起,之后可以用 reattach session 的方式重新恢复。不同于 screen 的是,tmux能够在一个窗口添加多个面板。比较常用的场景比如,开两个面板,一个打开 vim, 一个用来运行命令;再比如,需要同时操作多个服务器的时候,打开多个面板,同步输入到所有面板上去。这样就能在多个服务器上同时执行同一条命令。 安装: Ubuntu & Debian: sudo apt install tmux CentOS: sudo yum install tmux macOS: brew install tmux 需要先安装 HomeBrew 什么是 session 以及如何管理 session ? 在终端输入tmux 后,窗口会自动创建一个session 。所有的操作都会在这个 session 中进行。比如创建多个面板,在面板之间切换等等。session 可以被保存和恢复。比如你在一个 session 中打开了很多窗口,但是需要重启电脑,这个时候就可把 session 保存起来,然后重启之后恢复 session 来继续工作。 新建 session tmux 或者 tmux new tmux new -s <session_name> [-n <window_name] 指定 session 的名字和窗口的名字 离开 session Ctrl+b d: 挂起session,可以随时恢复 恢复 session...

February 28, 2021 · 2 min · 308 words · Eric Yang

使用Supervisor来守护Laravel Queue进程

安装Supervisor sudo apt-get install supervisor 编辑Queue守护进程 sudo vi /etc/supervisor/conf.d/myqueue.conf [program:myqueue] command = php artisan queue:work --env=production --queue=queue1,queue2 user = www-data directory = /path/to/app/ process_name = %(program_name)s_%(process_num)s numprocs = 6 autostart = true autorestart = true stdout_logfile = /path/to/app/app/storage/logs/supervisor-pd-queue.log stdout_logfile_maxbytes = 10MB stderr_logfile = /path/to/app/app/storage/logs/supervisor-pd-queue.log stderr_logfile_maxbytes = 10MB 启动进程 $ sudo supervisorctl > reread # Tell supervisord to check for new items in /etc/supervisor/conf.d/ > add myqueue # Add this process to Supervisord > start myqueue # May say “already started” 查看进程是否启动 $ ps aux | grep php

January 14, 2015 · 1 min · 87 words · Eric Yang

创建GIT服务器

添加git 用户 sudo adduser git 创建authorized_keys,用于认证用户 su git cd mkdir .ssh && chmod 700 .ssh touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys 添加认证用户公钥 在本地执行 cat .ssh/id_rsa.pub | ssh git@git-server 'cat >> .ssh/authorized_keys' 创建git repo cd /opt/git mkdir project.git cd project.git git init --bare 输出信息: Initialized empty Git repository in /opt/git/project.git/ 远程repo地址 git@git-server:/opt/git/project.git

January 13, 2015 · 1 min · 51 words · Eric Yang

Linux服务器安全设置

翻译自Linode: Securing Your Server 以下配置环境为: 本地: Mac OS X 服务器: Ubuntu 14.04 添加用户,并将其加入sudo组 例如增加webapps用户,并将其加入webapps用户组: ssh root@<your-service-ip> // 使用root登录服务器 groupadd webapps // 创建webapps用户组 useradd -m -g webapps -s /bin/bash webapps -m 创建home根目录 -g 指定用户组 -s 指定使用的bash sudo usermod -aG sudo webapps -G 附加用户组 在本地创建并使用SSH key认证登录服务器 生成密钥 ssh-keygen -t rsa -C "your_email@example.com" 避免在每次登录的时候每次都需要输入passphrase eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa 上传至服务器 使用webapps登录服务器,并执行mkdir ~/.ssh && touch ~/.ssh/authorized_keys创建空文件authorized_keys用于存放公钥 在本地执行cat ~/.ssh/id_rsa.pub | ssh webapps@<your-server-ip> 'cat >> .ssh/authorized_keys' 禁止root用户密码登录 sudo vi /etc/ssh/sshd_config 修改 PermitRootLogin yes 为 PermitRootLogin without-password sudo service ssh restart 重启ssh服务 创建防火墙 创建文件 /etc/iptables....

December 26, 2014 · 2 min · 311 words · Eric Yang

如何使用Linux的screen命令

摘录自: http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/ 功能 多终端共享一个SSH会话 能在网络状况不好的状况下保持可用 从多个地址断开并重新连接终端会话 在执行耗时任务时无需维持终端会话 安装 CentOS: yum install screen Ubuntu: apt-get install screen 起始命令 screen 进入screen模式 控制命令 Ctrl+a screen 使用Ctrl+a快捷键作为命令前缀来发送信号,例如Ctrl+a+?为打开screen帮助页面 创建窗口 Ctrl+a+c 使用默认视窗创建新的窗口,旧视窗能然可用 窗口之间切换 使用screen 向前或向后切换窗口 Ctrl+a+n 下一个窗口 Ctrl+a+p 上一个窗口 两次Ctrl+a 可以在最近的上一个或下一个窗口中来回切换 挂起会话 与当前的screen分离并跳出到原有的shell会话中,并可以使用screen -r重新连上 对于需要在服务器执行长时间消耗的任务是个非常不错的选择 PS: 如果当前网络连接中断,screen会自动挂起会话 Ctrl+a+d 恢复会话 如果你的会话连接由于某种原因中端,可以使用此命令恢复 screen -r 记录screen的输出 Ctrl+a+H 为当前会话创建日志进行追踪 screen 会跨多个会话进行日志追踪。对于在服务器操作较多的情况,可以有捕捉自己的操作 获取警告提醒 screen可以监听会话活动。在下载或者编译等耗时操作时,可用于提醒警告 当你在等待一个耗时进程的输出时,可使用Ctrl+a+M来监听活动。screen会等输出完成后,在页面底部闪出一条提醒。此时可切换至其他screen进行其他操作,而不需要时而切换回来查看任务是否完成 或者你在编译程序或下载文件,等待会话无内容输出的情况。可使用Ctrl+a+_来监听当前会话是否已无内容输出 锁定screen会话 当你要离开电脑一会儿,可使用Ctrl+a+x加入密码来锁定screen 停止screen 当完成任务后,推荐停止screen会话,而非挂起会话 输入exit Ctrl+a+k

December 22, 2014 · 1 min · 61 words · Eric Yang

Linux 常用命令笔记

Manage User /etc/shadow : Secure user account information /etc/passwd : User account information /etc/gshadow : Contains the shadowed information for group accounts /etc/group : Defines the groups to which users belong /etc/sudoers : List of who can run what by sudo /home/* : Home directories Add new Group groupadd [group] Add new User useradd -m -g [initial_group] -G [additional_groups] -s [login_shell] [username] -m creates the user home directory as /home/username. Within their home directory, a non-root user can write files, delete them, install programs, and so on....

December 18, 2014 · 4 min · 745 words · Eric Yang