Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

常用Linux命令 #17

Open
zjs1224522500 opened this issue Jul 14, 2019 · 24 comments
Open

常用Linux命令 #17

zjs1224522500 opened this issue Jul 14, 2019 · 24 comments
Labels
Command Command line

Comments

@zjs1224522500
Copy link
Owner

zjs1224522500 commented Jul 14, 2019

ps

Grammer

  • ps [options] [--help]

Parameters

  • -A //List all processes

  • -w //Show more info of processes

  • -au //Show more details of processes

  • -aux //Show all processes which is used by others.

  • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

    • VSZ: 占用的虚拟记忆体大小
    • RSS: 占用的记忆体大小
    • TTY: 终端的次要装置号码 (minor device number of tty)
    • STAT: 该行程的状态:
      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中
      • S: 静止状态
      • T: 暂停执行
      • Z: 不存在但暂时无法消除
      • W: 没有足够的记忆体分页可分配
      • <: 高优先序的行程
      • N: 低优先序的行程
      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间

  • TIME: 执行的时间

  • COMMAND:所执行的指令

  • ps aux|grep 'procee-name' | grep -v grep // Check the running info of given prorcess name except grep itself.

@zjs1224522500 zjs1224522500 added the Command Command line label Jul 14, 2019
@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Nov 11, 2019

scp

rz/sz

  • yum install -y lrzsz // 安装上传下载工具
  • sz file-name // 发送文件,下载
  • rz // 接收文件,上传

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Nov 18, 2019

查看 Linux 系统信息

  • lsb_release -a // 查看 linux 发行版信息
  • cat /etc/redhat-release // 查看操作系统信息
  • cat /proc/version // 查看内核信息
  • cat /proc/cpuinfo // 查看 CPU 信息
  • cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l // 查看 CPU 个数
  • cat /proc/cpuinfo| grep "cpu cores"| uniq // 查看 CPU 核数
  • cat /proc/cpuinfo | grep 'process' | sort | uniq | wc -l // 查看逻辑 CPU 的个数
  • cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c // 查看 CPU 型号
  • free -h // 查看内存信息

查看 CPU 指令支持情况

  • eg: 查看 CPU 是否支持 bmi2 指令. Src Code

使用 inxi 查看服务器整体信息

  • yum install -y inxi // 安装 inxi
  • inxi -F // 查看所有信息
[root@localhost ~]# inxi -F
System:    Host: localhost.localdomain Kernel: 5.12.10-1.el7.elrepo.x86_64 x86_64 bits: 64 Console: tty pts/3 
           Distro: CentOS Linux release 7.4.1708 (Core) 
Machine:   Type: Desktop System: Inspur product: SA5248 v: 00001 serial: 215327120-D 
           Mobo: Inspur model: SA5248 serial: N/A BIOS: American Megatrends v: 3.0.1 date: 01/12/2015 
CPU:       Info: 2x 6-Core model: Intel Xeon E5-2420 v2 bits: 64 type: MT MCP SMP cache: L2: 30 MiB 
           Speed: 1197 MHz min/max: 1200/2700 MHz Core speeds (MHz): 1: 1197 2: 1197 3: 1266 4: 1197 5: 1198 6: 1197 7: 1198 
           8: 1197 9: 1197 10: 1197 11: 1214 12: 1198 13: 1197 14: 1197 15: 1197 16: 1198 17: 1227 18: 1197 19: 1197 20: 1197 
           21: 1198 22: 1198 23: 1257 24: 1414 
Graphics:  Device-1: ASPEED Graphics Family driver: ast v: kernel 
           Display: server: X.org 1.19.3 driver: loaded: modesetting unloaded: fbdev,vesa 
           Message: Advanced graphics data unavailable for root. 
Audio:     Message: No Device data found. 
           Sound Server-1: PulseAudio v: 10.0 running: yes 
Network:   Device-1: Mellanox MT27500 Family [ConnectX-3] driver: mlx4_core 
           IF: ib0 state: up speed: 10000 Mbps duplex: full mac: 80:00:02:08:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7c:44:71 
           Device-2: Intel I350 Gigabit Network driver: igb 
           IF: enp7s0f0 state: up speed: 1000 Mbps duplex: full mac: d4:3d:7e:6e:c3:d6 
           Device-3: Intel I350 Gigabit Network driver: igb 
           IF: enp7s0f1 state: down mac: d4:3d:7e:6e:c3:d7 
           IF-ID-1: virbr0 state: down mac: 52:54:00:79:b8:77 
           IF-ID-2: virbr0-nic state: down mac: 52:54:00:79:b8:77 
RAID:      Hardware-1: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] driver: megaraid_sas 
Drives:    Local Storage: total: 501.94 GiB used: 80.33 GiB (16.0%) 
           ID-1: /dev/sda model: MRSASRoMB-8i size: 223.06 GiB 
           ID-2: /dev/sdb model: MRSASRoMB-8i size: 278.88 GiB 
Partition: ID-1: / size: 49.98 GiB used: 23.97 GiB (48.0%) fs: xfs dev: /dev/dm-0 
           ID-2: /boot size: 1014 MiB used: 224.3 MiB (22.1%) fs: xfs dev: /dev/sdb1 
           ID-3: /home size: 199.88 GiB used: 56.14 GiB (28.1%) fs: xfs dev: /dev/dm-2 
Swap:      ID-1: swap-1 type: partition size: 27.89 GiB used: 0 KiB (0.0%) dev: /dev/dm-1 
Sensors:   Message: No ipmi sensors data was found. 
           System Temperatures: lm-sensors cpu: 34.0 C mobo: N/A 
           Fan Speeds (RPM): lm-sensors N/A 
Info:      Processes: 375 Uptime: 7d 2h 15m Memory: 62.88 GiB used: 2.44 GiB (3.9%) Shell: Bash inxi: 3.3.03

查看 Linux 性能情况

参考链接

查看磁盘信息

NVMe

smartmontool

  • apt install smartmontools
  • smartctl -a /dev/nvme0n1

nvme-cli

  • nvme list

NVMe SSD smart 信息参数解释

01. Critical Warning严重警告,该字段表示控制器状态的严重警告,Raw值是0的话就没事。
02. Temperature温度,Raw值是以“开”为单位的SSD温度信息。
03. Available Spare可用备用空间,是可用剩余容量的百分比。
04. Available Spare Threshold可用备用临界值,这个临界值由厂商定义,用百分比显示。
05. Percentage Used使用百分比,设备使用寿命百分比的估算,具体取决于实际设备使用情况和厂商对设备寿命的预测。
06. Data Units Read数据单位读取,该项记录的是主机从SSD里读取512字节数据单元的数量,每1000个单元记录一次,即这项Raw数据1的值等于500KB。
07. Data Units Written数据单位写入,同上,把上面那段的读取换成写入即可。
08. Host Read Commands主机读取命令,主控收到的读取命令数量。
09. Host Write Commands主机写入命令,主控收到的写入命令数量。
0A. Controller Busy Time控制器繁忙时间,主控忙于I/O命令的时间。
0B. Power Cycles电源循环,SSD的通电次数。
0C. Power On Hours开机时间,记录开机的小时数。
0D. Unsafe Shutdowns不安全关机,非正常断电次数记录。
0E. Media Errors媒体和资料完整性错误,主控检测得到的未恢复的数据完整性错误次数。
0F. Number of Error Information Log Entries错误资料记录项目数,主控总共收到的错误信息日志数量。

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Mar 24, 2020

SSH 相关

  • 网道- SSH教程
  • ssh-keygen // 生成ssh
  • root/.ssh/ // ssh 存放目录
  • cat /root/.ssh/authorized_keys // 查看授权的public key
  • chmod 600 authorized_keys // 授予 600 权限给 免密 Key
  • service sshd restart // restart ssh service to enable configuration
  • ssh-copy-id -i .ssh/id_rsa.pub [email protected] // 拷贝公钥

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Jul 3, 2020

查看Linux开机关机日志

  • last -1 reboot // 最近一次开机时间
  • last -x | grep shutdown //以关机时间段显示

定时任务

  • crontab -l // 查看定时任务列表
  • crontab -e // 编辑定时任务
  • 20 21 * * * /sbin/shutdown -h 21:30 // Crontab 中定时关机 21:20 执行一个定时关机 /sbin/shutdown -h 21:30

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Aug 6, 2020

内存缓存

  • echo 1 > /proc/sys/vm/drop_caches // 清除页缓存
  • echo 2 > /proc/sys/vm/drop_caches // 清除目录项和 inode
  • sync && echo 3 > /proc/sys/vm/drop_caches // 清除页面缓存,目录项和inode (首先同步脏页)

blktrace

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Aug 21, 2020

iscsi Test

  • 查看客户端标识: cat /etc/iscsi/initiatorname.iscsi

Python 命令

  • python -m unittest package.class.method Python Unittest 运行
    • eg. python -m unittest torch.tests.volume_driver_fileio.TestFileIODriver.test_create_backstore
    • eg. python -m unittest torch.tests.volume_driver_hcs.TestHCSObjectDriver.test_hust_bucket

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Aug 31, 2020

存储系统性能测试

指标介绍

  • 吞吐量:每秒钟可以处理的数据量,常以MB/s或GB/s为单位,用于衡量存储系统的吞吐量。在数据库OLAP(Online Analytical Processing)业务、媒资业务、视频监控业务等应用场景,通常以带宽衡量系统性能。
  • 延迟:发起I/O请求到I/O处理完成的时间间隔,常以毫秒(ms)为单位。常用指标包括平均响应时间和最大响应时间。例如,数据库OLTP业务一般时延要求10ms以下;VDI(Virtual Desktop Infrastructure)场景一般时延要求30ms以下;视频点播和视频监控的时延要求随码率的不同而不同。
  • IOPS:I/O per second,即每秒钟可以处理的I/O个数,用来衡量存储系统的I/O处理能力。在数据库OLTP(Online Transaction Processing)业务、SPC-1认证等应用场景,通常以IOPS衡量系统的性能。
  • 尾延迟:尾延迟是指系统中最慢的少部分数据访问对应的响应延迟,即,高百分位延迟。所谓高百分位延迟是指系统响应延迟的第𝑝百分位数(𝑝 ≥ 90)。百分位数是统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。常见的用于衡量尾延迟的指标为第 99 百分位的响应延迟。若系统第 99 百分位的响应延迟为𝑥毫秒,则系统中 99%的请求应当能够在𝑥毫秒内得到响应。(摘自华中科技大学苏毅博士毕业论文 - 云存储系统尾延迟优化技术研究
  • 对于I/O小于64KB的应用场景,存储性能主要关注IOPS指标。
  • 对于I/O大于等于64KB的应用场景,存储性能主要关注吞吐量指标。

In short, the throughput is a function of how many stages are in parallel while latency is a function of how many are in series when there are multiple stages in the processing. The stage with the lowest throughput determines the overall throughput.

常用工具

FIO 常用命令

参数说明

      filename=/dev/sdb1  //测试文件名称,通常选择需要测试的盘的data目录
      direct=1        //测试过程绕过机器自带的buffer,使测试结果更真实
      rw=randrw        //混合随机读和写I/O,默认读写比例5:5
      rw=randwrite     //测试随机写的I/O  
      bs=16k               //单次I/O的块文件大小为16k 
      bsrange=512-2048    //数据块的大小范围,从512bytes到2048 bytes
      size=5G         //指所有job的总共I/O大小
      numjobs=1       //job的默认数量,也就是并发数,默认是1
      runtime=180       //在180秒,压力测试将终止
      ioengine=libaio     //指定I/O引擎
      rwmixwrite=20       //在混合读写的模式下,写占20%
      group_reporting    //如果设置了多任务参数numjobs,用每组报告代替每job报告
      lockmem=1g           //只使用1g内存进行测试                                                                      
      userspace_reap     //配合libaio,提高异步io的收割速度
      time_based       //在runtime压力测试周期内,如果规定数据量测试完,要重复测试 
      randrepeat=0      //设置产生的随机数是不可重复的 
      exitall         //一个job完成,就停止所有的
      refill_buffers    //每次提交后都重复填充io buffer
      overwrite=1      //设置文件可覆盖
      sync=1         //设置异步io
      fsync=1        //设置同步io
      invalidate=1     //开始io之前就失效buffer-cache
      thinktime=600     //在发布io前等待600秒
      bssplit=4k/30:8k/40:16k/30  //随机读4k文件占30%、8k占40%、16k占30%
      rwmixread=70     //读占70% 
  • 顺序读:
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 
  • 顺序写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
  • 随机写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 
  • 随机读
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
  • 混合随机读写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Jan 20, 2021

网络性能监控测试

IB

常见网络问题

iftop 抓包

  • iftop -i eth0 -N -P -t -L 1000 -s 30 > /tmp/iftop.log
    • 抓包网卡 eth0,
    • cat /tmp/iftop.log | awk '{print $2}' | sort | uniq // 过滤 IP 信息

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Jan 20, 2021

正向代理

  • 配置完成后注意检查如 iptables 一类的防火墙配置,检查是否开放相应端口和数据访问

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Feb 28, 2021

防火墙

iptables

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Jun 15, 2021

系统相关

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Sep 26, 2021

x

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Nov 22, 2021

服务器安全相关

局域网内挖矿病毒的排查

定位网内被劫持的机器

  • 检测局域网内单个机器的登陆失败日志,查看是否有高频的登陆失败记录。lastb
  • 对登陆失败的 IP 进行一个去重排序:lastb | awk '{print $3}' | sort | uniq
  • 根据IP判断是否为自己控制的机器
    • 可能出现大量的失败 IP 为 127.0.0.1 的情况,可能是服务器内部某个服务被攻击,可以 deny 本地登录

找到源头机器之后查看其他影响机器

  • 根据对应的 history 信息查看对应的 ssh 情况:history | grep ssh
    • 一般成功碰撞出密码后就会执行对应的 ssh 命令
  • 检查对应的定时任务列表(所有用户):for u in cat /etc/passwd | cut -d":" -f1;do echo "-"$u ;crontab -l -u $u;done

连接机器查找相关劫持病毒信息

@zjs1224522500
Copy link
Owner Author

grep

Grammer

  • grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

Parameters

  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 --count : 计算符合样式的列数。
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的普通表示法来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --revert-match : 显示不包含匹配文本的所有行。
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定"-i"参数相同。

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Dec 10, 2021

tar

Parameters

  • -c: 建立压缩档案
  • -x:解压
  • -t:查看内容
  • -r:向压缩归档文件末尾追加文件
  • -u:更新原压缩包中的文件
  • -z:有gzip属性的
  • -j:有bz2属性的
  • -Z:有compress属性的
  • -v:显示所有过程
  • -O:将文件解开到标准输出
  • -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg        // 将所有.jpg的文件打成一个名为all.tar的包
tar -rf all.tar *.gif         // 将所有.gif的文件增加到all.tar的包里面去
tar -uf all.tar logo.gif  // 更新原来tar包all.tar中logo.gif文件
tar -tf all.tar                // 列出all.tar包中所有文件
tar -xf all.tar                // 解出all.tar包中所有文件
tar –cvf jpg.tar *.jpg    //将目录里所有jpg文件打包成jpg.tar
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg          //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg           //zip格式的压缩,需要先下载zip for linux
tar –xvf file.tar             //解压 tar包
tar -xzvf file.tar.gz       //解压tar.gz
tar -xjvf file.tar.bz2     //解压 tar.bz2
tar –xZvf file.tar.Z       //解压tar.Z
unrar e file.rar            //解压rar
unzip file.zip              //解压zip

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Dec 10, 2021

文件操作

  • rm
  • chmod
  • mv
  • cp

rm

Grammer

  • rm [options] name...

Parameters

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。
rm  -r  * //Delete all files in this directory.

chmod

Grammer

  • chmod [-cfvR] [--help] [--version] mode file...
  • mode: [ugoa...][[+-=][rwxX]...][,...]

Parameters

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。 r=4,w=2,x=1
其他参数说明:
  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本
chmod u+x ex1.py
chmod 777 file

@zjs1224522500
Copy link
Owner Author

dmesg

Grammer

  • dmesg [option]

Parameters

 -C, --clear                 clear the kernel ring buffer
 -c, --read-clear            read and clear all messages
 -D, --console-off           disable printing messages to console
 -E, --console-on            enable printing messages to console
 -F, --file           use the file instead of the kernel log buffer
 -f, --facility       restrict output to defined facilities
 -H, --human                 human readable output
 -k, --kernel                display kernel messages
 -L, --color[=]        colorize messages (auto, always or never)
                               colors are enabled by default
 -l, --level          restrict output to defined levels
 -n, --console-level set level of messages printed to console
 -P, --nopager               do not pipe output into a pager
 -r, --raw                   print the raw message buffer
 -S, --syslog                force to use syslog(2) rather than /dev/kmsg
 -s, --buffer-size    buffer size to query the kernel ring buffer
 -u, --userspace             display userspace messages
 -w, --follow                wait for new messages
 -x, --decode                decode facility and level to readable string
 -d, --show-delta            show time delta between printed messages
 -e, --reltime               show local time and time delta in readable format
 -T, --ctime                 show human readable timestamp (may be inaccurate!)
 -t, --notime                don't print messages timestamp
     --time-format  show time stamp using format:
                               [delta|reltime|ctime|notime|iso]
Suspending/resume will make ctime and iso timestamps inaccurate.
 -h, --help     display this help and exit

dmesg -T | tail

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Dec 10, 2021

new

@zjs1224522500
Copy link
Owner Author

gcc

1、预处理,生成 .i 的文件[预处理器cpp]
2、将预处理后的文件不转换成汇编语言, 生成文件 .s [编译器egcs]
3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]
4、连接目标代码, 生成可执行程序 [链接器ld]

Parameters

  • -x language filename
  • -x none filename
  • -o // 可以指定输出的文件名
  • -Wall // 启用所有警告
  • -E // 只产生预处理输出
  • -S // 产生汇编级别的代码
  • -save-temps // 产生所有的中间步骤的文件
  • -l // 链接共享库 (Link)
  • -V // 提供详细的信息,打印出gcc编译一个文件的时候所有的步骤
  • -D // 可以用作定义编译时的宏。
  • -L // 跟着的是库文件所在的目录名 (Library)
  • -I // 指定头文件的文件夹 (Include)
  • -std // 指定支持的c++/c的标准
  • -static // 生成静态链接的文件
gcc mysql-connect.c -o mysql-connect -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient

@zjs1224522500
Copy link
Owner Author

curl

@zjs1224522500
Copy link
Owner Author

zjs1224522500 commented Dec 10, 2021

sed

  • sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
  • https://www.runoob.com/linux/linux-comm-sed.html

Grammer

  • sed [option] 'sed command' filename
  • sed [-hnV][-e<script>][-f<script文件>][文本文件]

Parameters

  • -n :只打印模式匹配的行
  • -e :直接在命令行模式上进行sed动作编辑,此为默认选项
  • -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
  • -r :支持扩展表达式
  • -i :直接修改文件内容
  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

Cases

以行为单位的增加/删除
  • sed -e 4a\newLine testfile // 在 testfile 文件的第四行后追加一行 'newline',并将结果输出到标准输出(sed默认行为)
  • nl /etc/passwd | sed '2,5d' // nl 计算文件中的行号并给输出内容加上行号。该命令 将 /etc/passwd 的内容列出并且列印行号并将第 2~5 行删除
  • nl /etc/passwd | sed '2d' // 只删除第二行
  • nl /etc/passwd | sed '3,$d' // 删除第三行到最后一行
  • nl /etc/passwd | sed '2a drink tea' // 第二行后(即第三行)加上 drink tea
  • nl /etc/passwd | sed '2i drink tea' // 第二行前加上 drink tea
  • 在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer? 每一行之间都必须要以反斜杠『 \ 』来进行新行的添加
nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'

@zjs1224522500
Copy link
Owner Author

Linux 用户管理

option

用户管理相关

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

密码管理相关

-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。

命令

  • useradd [option] username
    • useradd –d /home/sam -m sam
    • useradd -s /bin/sh -g group –G adm,root gem
  • userdel [option] username
    • # userdel -r sam // 连目录一起删除
  • usermod [option] username
    • usermod -s /bin/ksh -d /home/z –g developer sam
  • passwd [option] username
  • groupadd [option] usergroup
  • groupdel usergroup
  • groupmod [option] usergroup

@zjs1224522500
Copy link
Owner Author

Tmux

  • tmux new -s shunzi // create a tmux session named shunzi
  • ctrl+b + % // split window
  • ctrl+b + : + set -g mouse on // enable mouse

@zjs1224522500
Copy link
Owner Author

NFS

For server

  • apt install nfs-kernel-server -y
  • mkdir -p /mnt/nfs_share
  • chown -R nobody:nogroup /mnt/nfs_share/
  • chmod 777 /mnt/nfs_share/
  • vim /etc/exports
    • /mnt/nfs_share 192.168.1.222/32(rw,sync,no_subtree_check)
  • exportfs -a
  • systemctl restart nfs-kernel-server

For Client

  • apt install nfs-common -y
  • mkdir -p /mnt/nfs_share
  • mount 192.168.1.111:/mnt/nfs_share /mnt/nfs_share
  • vim /etc/fstab
    • 192.168.1.111:/mnt/nfs_share /mnt/nfs_share nfs rw 0 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Command Command line
Projects
None yet
Development

No branches or pull requests

1 participant