关于linux:Linux-之-time-命令

统计给定命令所破费的总工夫,time命令 用于统计给定命令所破费的总工夫。命令语法time [参数] 命令参数指令:指定须要运行的额指令及其参数。统计ls执行的工夫当测试一个程序或比拟不同算法时,执行工夫是十分重要的,一个好的算法应该是用时最短的。所有类UNIX零碎都蕴含time命令,应用这个命令能够统计工夫耗费。例如:> time lsreal 0m0.001suser 0m0.000ssys 0m0.002s输入的信息别离显示了该命令所破费的real工夫、user工夫和sys工夫。real工夫是指挂钟工夫,也就是命令开始执行到完结的工夫。这个短时间包含其余过程所占用的工夫片,和过程被阻塞时所破费的工夫。user工夫是指过程破费在用户模式中的CPU工夫,这是惟一真正用于执行过程所破费的工夫,其余过程和破费阻塞状态中的工夫没有计算在内。sys工夫是指破费在内核模式中的CPU工夫,代表在内核中执零碎调用所破费的工夫,这也是真正由过程应用的CPU工夫。外围态(Kernel Mode):在内核态,代码领有齐全的,不受任何限度的拜访底层硬件的能力。能够执行任意的CPU指令,拜访任意的内存地址。内核态通常状况下,都是为那些最底层的,由操作系统提供的,可信牢靠的代码来运行的。内核态的代码解体将是灾难性的,它会影响到整个零碎。 用户态(User Mode):在用户态,代码不具备间接拜访硬件或者拜访内存的能力,而必须借助操作系统提供的牢靠的,底层的APIs来拜访硬件或者内存。因为这种隔离带来的爱护作用,用户态的代码解体(Crash),零碎是能够复原的。咱们大多数的代码都是运行在用户态的。 装置第三方的time命令shell内建也有一个time命令,当运行time时候是调用的零碎内建命令,应为零碎内建的性能无限,所以须要工夫其余性能须要应用time命令可执行二进制文件/usr/bin/time。Centos装置> yum -y install time应用-o选项将执行工夫写入到文件中> /usr/bin/time -o out.txt ls应用-a选项追加信息:> /usr/bin/time -a -o out.txt ls应用-f选项格式化工夫输入:> /usr/bin/time -f "time: %U" ls-f选项后的参数参数形容%Ereal工夫,显示格局为[小时:]分钟:秒%Uuser工夫。%Ssys工夫。%C进行计时的命令名称和命令行参数。%D过程非共享数据区域,以KB为单位。%x命令退出状态。%k过程接管到的信号数量。%w过程被替换出主存的次数。%Z零碎的页面大小,这是一个零碎常量,不必零碎中常量值也不同。%P过程所获取的CPU工夫百分百,这个值等于 user+system 工夫除以总共的运行工夫。%K过程的均匀总内存使用量(data+stack+text),单位是 KB。%w过程被动进行上下文切换的次数,例如期待I/O操作实现。%c过程被迫进行上下文切换的次数(因为工夫片到期)。取得执行 ps -aux 的后果和所破费的系统资源> /usr/bin/time -v ps -aux....Command being timed: "ps -aux"User time (seconds): 0.00System time (seconds): 0.01Percent of CPU this job got: 100%Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01Average shared text size (kbytes): 0Average unshared data size (kbytes): 0Average stack size (kbytes): 0Average total size (kbytes): 0Maximum resident set size (kbytes): 1944Average resident set size (kbytes): 0Major (requiring I/O) page faults: 0Minor (reclaiming a frame) page faults: 593Voluntary context switches: 4Involuntary context switches: 7Swaps: 0File system inputs: 0File system outputs: 0Socket messages sent: 0Socket messages received: 0Signals delivered: 0Page size (bytes): 4096Exit status: 0原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 27, 2021 · 1 min · jiezi

关于linux:记录安装slurm错误

1.错误信息[root@localhost home]# rpmbuild -ta slurm-21.08-latest.tar.bz2 谬误:文件 /home/slurm-21.08.0.tar.bz2:没有那个文件或目录[root@localhost home]# rpmbuild -ta slurm-21.08-latest.tar.bz2 谬误:文件 /home/slurm-21.08.0.tar.bz2:没有那个文件或目录解决文件名短少个.0信息,批改文件名即可

August 27, 2021 · 1 min · jiezi

关于linux:Wine-专区上线PS-等榜单前-6-都在这

始终以来,优麒麟社区都在踊跃收集和驳回用户的反馈,晓得用户对于罕用娱乐、办公软件的需要日渐迫切,Linux 环境下生态太少的问题也日渐突出。当初,好消息来啦!ukylin-wine 正式入库优麒麟源和上线优麒麟官网,目前有如下 6 款利用可供使用:QQ、微信、腾讯会议、企业微信、Photoshop、蓝信,哪一款最满足你的期待? ukylin-wine 介绍ukylin-wine 是基于 Wine 开发的一款软件,用于在 Linux 零碎上兼容运行 Windows 软件,与 Wine 相比有如下特点: 采纳了相似于 AppImage 的依赖自蕴含计划,解决了 Wine 因为依赖包缺失或者版本不对导致的性能缺点问题,并使 ukylin-wine 可利用多个 Linux 发行版。2.ukylin-wine 计划为不便用户应用,把其模仿运行的 Windows 应用程序也封成了 Deb 包,用户可间接装置应用,免去了配置 Wine 程序的繁琐步骤。 软件介绍QQ:是腾讯公司推出的一款基于互联网的即时通信软件。 微信:是腾讯公司推出的一款为智能终端提供即时通讯服务的收费应用程序。 腾讯会议:是腾讯云旗下的一款音视频会议软件。 企业微信:是腾讯微信团队推出的一款企业通信与办公工具。 Photoshop:是由 Adobe 公司推出的一款图像处理软件。 蓝信:是由蓝信挪动公司推出的一款平安挪动工作平台 。 Wine 软件装置一、麒麟软件商店装置 从开始菜单中关上“麒麟软件商店”,在搜寻框输出“wine”就能够看到本次上架的软件列表,单击进入软件详情页面,点击“下载”即可。下图以微信为例: 二、通过源装置 1、应用源装置前,须要先关上终端输出如下命令更新源: sudo apt-get updatesudo apt-get upgrade2、应用源来装置 Wine 环境,持续输出如下命令装置 Wine 环境,通过源装置能够最大水平解决软件的依赖问题哦~ sudo apt-get install ukylin-wine3、如果看到这里,置信大家曾经实现 Wine 环境装置啦,接下来咱们便能够装置 Windows 程序,上面以 PS 为例: sudo apt-get install ukylin-ps64、除了 PS 以外,源里反对其余几款利用,在终端输出如下命令后,再按下 Tab 键,即可看到软件列表哦~ ...

August 27, 2021 · 1 min · jiezi

关于linux:Linux-之-seq-命令

以指定增量从首数开始打印数字到尾数,seq命令用于产生从某个数到另外一个数之间的所有整数。命令语法> seq [选项]... 尾数> seq [选项]... 首数 尾数> seq [选项]... 首数 增量 尾数命令选项-f, --format=格局 应用printf 款式的浮点格局-s, --separator=字符串 应用指定字符串分隔数字(默认应用:\n)-w, --equal-width 在列前增加0 使得宽度雷同指定格局显示> seq -f"%3g" 10 1 2 3 4 5 6 7 8 9 10%前面指定数字的位数默认是%g,%3g那么数字位数有余局部默认是空格。指定格局显示,有余的位数填充0> seq -f"%03g" 10001002003004005006007008009010指定3位显示,有余3位填充零指定格局显示,有余的位数填充0,并在后面增加字符串> seq -f"rumen%03g" 10rumen001rumen002rumen003rumen004rumen005rumen006rumen007rumen008rumen009rumen010这样的话数字位数有余局部是0,%后面制订字符串。指定输入数字同宽> seq -w 1001020304050607080910不能和-f一起用,输入是同宽的。指定分隔符(默认是回车)> seq -s" " 101 2 3 4 5 6 7 8 9 10> seq -s"#" 101#2#3#4#5#6#7#8#9#10要指定/t做为分隔符号> seq -s"`echo -e "\t"`" 101 2 3 4 5 6 7 8 9 10批量创立文件> touch $(seq -f"rumenz%03g.txt" 10)> ls -al *.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz001.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz002.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz003.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz004.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz005.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz006.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz007.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz008.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz009.txt-rw-r--r-- 1 root root 0 Apr 4 22:46 rumenz010.txt以倒序显示数字> eq 10 -1 110987654321小数序列> seq -f "%f" 1 0.5 31.0000001.5000002.0000002.5000003.000000-f小数显示,步长是0.5小数序列,指定小数位数> seq -f "%.2f" 1 0.5 31.001.502.002.503.00%.2f显示2位小数,步长是0.5原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 26, 2021 · 1 min · jiezi

关于linux:Linux

linux符号: > windows/macos (客户机) $ linux (服务器-普通用户) # linux(服务器-超级管理员)1) 近程登录、近程文件传输1. 图形化界面形式(简略直观、装置图像化界面软件、配置)xshell filezilla 2. 命令行模式 > ssh root@121.199.29.84应用root账号,登录ip为121.199.29.84的主机通常状况下,咱们不间接应用root进行登录,务必将root的明码设置的较为简单(然而不要遗记) # exit退出登录 > scp ./app.zip root@121.199.29.84:/var/www/html将当前目录下的app.zip上传到ip为121.199.29.84 /var/www/html(应用root账号登录,如果应用一般账号登录,只能将文件传输到家目录中) > scp ./app.zip charles@121.199.29.84:/var/www/html报错!没有权限! > scp ./app.zip charles@121.199.29.84:~window(DOS命令) c:/users/王五 桌面 下载 影音 珍藏win下进入命令行 win+R 关上了dos, dos默认所在目录为 c:/users/王五 > dir 相似于linux中的ls, 打印出当前目录下的文件及子目录 > cd 桌面 2) 文件系统(门路、文件、目录) / /root 超级管理员的家目录 /home/charles charles用户的家目录 /home/jacky jacky用户的家目录 /etc 配置文件目录 group 组信息 passwd 账号信息 shadow 账号敏感信息(一般账号无奈查看) /var 可变目录 /opt 第三方软件装置目录 jdk,nodejs /usr/local 默认软件装置目录 apt install ...命令模板命令 [options] [arguments] options -la ...

August 26, 2021 · 3 min · jiezi

关于linux:Laravel-性能优化

Laravel 性能优化1、敞开调试模式关上利用根目录下的 .env 文件,把 debug 设置为 false。APP_DEBUG=false2、缓存配置信息php artisan config:cache运行以上命令能够把 config 文件夹里所有配置信息合并到一个 bootstrap/cache/config.php 文件中,缩小运行时载入文件的数量。php artisan config:clear运行以上命令能够革除配置信息的缓存,也就是删除 bootstrap/cache/config.php 文件留神:如果开启了配置缓存,每次批改配置后,都要从新生成配置才会失效。3、革除应用程序缓存$ php artisan cache:clear4、革除路由缓存$ php artisan route:cache5、革除已编译的视图文件$ php artisan view:clear本文由博客群发一文多发等经营工具平台 OpenWrite 公布

August 26, 2021 · 1 min · jiezi

关于linux:ubuntu20-安装-mysqlclient-报错并且解决-39-安装-dev-问题

在 ubuntu20 中装置了以下 mysqlclient,遇到了不少谬误,起因在于 mysqlclient 须要依赖一些动态链接库,还有就是和 python 版本有关系 环境介绍:ubuntu20 出厂自带 python3.8 ,然而我本人装置了 python3.9 应用命令:sudo apt install python3.9 便能够装置 python3.9子标题: 装置Python mysqlclient呈现“OSError: mysql_config not found”谬误跨零碎 python 版本装置 python3.9-dev为 ubuntu20 装置 python3.9-dev报错一:残缺报错信息 ERROR: Command errored out with exit status 1: command: /home/bot/.local/share/virtualenvs/django-twitter-IaucORjf/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ksb3c8ih cwd: /tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/ Complete output (15 lines): /bin/sh: 1: mysql_config: not found /bin/sh: 1: mariadb_config: not found /bin/sh: 1: mysql_config: not found Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/setup.py", line 15, in <module> metadata, options = get_config() File "/tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/setup_posix.py", line 70, in get_config libs = mysql_config("libs") File "/tmp/pip-install-ad2qu_uy/mysqlclient_df40fd48e0dc469e8a102567b171b787/setup_posix.py", line 31, in mysql_config raise OSError("{} not found".format(_mysql_config_path)) OSError: mysql_config not found mysql_config --version mariadb_config --version mysql_config --libs ----------------------------------------WARNING: Discarding https://pypi.tuna.tsinghua.edu.cn/packages/3c/df/59cd2fa5e48d0804d213bdcb1acb4d08c403b61c7ff7ed4dd4a6a2deb3f7/mysqlclient-2.0.3.tar.gz#sha256=f6ebea7c008f155baeefe16c56cd3ee6239f7a5a9ae42396c2f1860f08a7c432 (from https://pypi.tuna.tsinghua.edu.cn/simple/mysqlclient/) (requires-python:>=3.5). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.ERROR: Could not find a version that satisfies the requirement mysqlclient==2.0.3 (from versions: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11rc1, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.4.0rc1, 1.4.0rc2, 1.4.0rc3, 1.4.0, 1.4.1, 1.4.2, 1.4.2.post1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 2.0.0, 2.0.1, 2.0.2, 2.0.3)ERROR: No matching distribution found for mysqlclient==2.0.3解决办法: ...

August 25, 2021 · 3 min · jiezi

关于linux:Linux-之-nohup-命令

nohup命令 能够将程序以疏忽挂起信号的形式运行起来,被运行的程序的输入信息将不会显示到终端 无论是否将 nohup 命令的输入重定向到终端,输入都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输入重定向到$HOME/nohup.out文件中。如果没有文件能创立或关上以用于追加,那么 command 参数指定的命令不可调用。如果规范谬误是一个终端,那么把指定的命令写给规范谬误的所有输入作为规范输入重定向到雷同的文件描述符。 命令格局 nohup Command [ Arg … ] [ & ] 参数阐明Command:要执行的命令。Arg:一些参数,能够指定输入文件。&:让命令在后盾执行,终端退出后命令仍旧执行。命令后盾执行,失常输入和谬误输入到a.log文件> nohup command > a.log 2>&1 &2>&1 解释将规范谬误 2 重定向到规范输入 &1 ,规范输入 &1 再被重定向输出到 runoob.log 文件中。0 – stdin (standard input,规范输出)1 – stdout (standard output,规范输入)2 – stderr (standard error,规范谬误输入)后盾下载文件> nohup wget https://repo.huaweicloud.com/java/jdk/8u172-b11/jdk-8u172-linux-x64.tar.gz &// 查看后盾的过程> jobs[1]+ Running nohup wget https://repo.huaweicloud.com/java/jdk/8u172-b11/jdk-8u172-linux-x64.tar.gz &下载过程中,输入在nohup.out文件中,能够应用tail -f nohup.out动静查看后盾运行SpringBoot我的项目> nohup java -jar rumenz.jar &后盾执行bash命令> nohup bash -c 'cal && ls' > output.txt原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 25, 2021 · 1 min · jiezi

关于linux:Linux-的安装与卸载

装置这里次要论述分区计划: / 根目录,整个目录构造的起始点。调配 20GB 以上。根目录简述图: graph TDa[ / ] --> b[ /bin ]a --> c[ /sbin ]a --> d[ /usr ]a --> e[ /lib ]a --> f[其余文件夹]d --> g[ /bin ]d --> h[ /local ]d --> i[ /lib ]h --> j[ /include ]/boot 搁置 Linux 系统启动时用到的一些文件。最大调配 500MB 左右。swap 替换空间,又叫长期存储空间、虚拟内存。现在的内存和固态硬盘性能差距微小,调配太多没有意义。调配 2GB 即可。/home 家目录。作用和 Windows 10 零碎中的 Users 文件夹相似。硬盘剩下的空间全副调配给这个目录。/boot/eif 启动疏导分区。装置双系统请留神这个步骤。打个比方,你先装置了 Windowns 10 零碎,那么硬盘中必定会有 4 个分区。其中第一个分区是 FAT 格局的,大小在 100MB 左右。将这个分区标记(或者说编辑)为 /boot/efi 分区,而后将其设置成“保留”(个别有个“保留”按钮能够给你点击)。 ...

August 25, 2021 · 1 min · jiezi

关于linux:Linux-通过-Headless-Chrome-实现-SVG-to-PDF-或-HTML-to-PDF

一. QA什么是 Headless Chrome?在 Chrome59 中开始搭载 Headless Chrome。这是一种在无需显示 headless 的环境下运行 Chrome 浏览器的形式。从实质上来说,就是不必 Chrome 浏览器来运行 Chrome 的性能!它将 Chromium 和 Blink 渲染引擎提供的所有古代 Web 平台的性能都带入了命令行。理解intoli开始装置之前咱们来理解一下这家公司咱们(intoli)是一家在数据采集,解决和剖析方面具备深厚专业知识的咨询机构。二. 装置Centos7 之装置 Headless Chromeintoli 在其博客上介绍了几种装置 Headless Chrome 的形式,咱们采纳如下形式装置: curl https://intoli.com/install-google-chrome.sh | bash装置实现提醒: Successfully installed Google Chrome!运行 chrome 咱们能够通过如下命令来启动 Chrome,同时将HTML保留PDF (http 换成你想转换的html) google-chrome-stable --no-sandbox --headless --disable-gpu --print-to-pdf=baidu.pdf https://www.baidu.com咱们能够通过如下命令来启动 Chrome,同时将SVG保留PDF (test.svg 换成你想转换的SVG文件 目录要正却,命令是跟目录文件,理论依据你的目录走 如/www/test.svg) google-chrome-stable --no-sandbox --headless --disable-gpu --print-to-pdf=baidu.pdf test.svgintoli 装置文档 参考文档 结语后续更新

August 25, 2021 · 1 min · jiezi

关于linux:Linux-之-nc-命令

用于设置路由器,是网络工具中的瑞士军刀 nc命令 全称netcat,用于设置路由器。它能通过 TCP 和 UDP 在网络中读写数据。通过与其余工具联合和重定向,你能够在脚本中以多种形式应用它。应用 netcat 命令所能实现的事件令人诧异。 Centos装置nc> yum -y install ncUbuntu装置nc> apt-get install netcatMac装置nc> brew install netcat命令格局`nc -hlnruz-G<指向器数目>-o<输入文件>-s<起源位址>-w<超时秒数>[通信端口...]` 命令选项-g<网关> 设置路由器跃程通信网关,最多可设置8个。-G<指向器数目> 设置起源路由指向器,其数值为4的倍数。-h 在线帮忙。-i<提早秒数> 设置工夫距离,以便传送信息及扫描通信端口。-l 应用监听模式,管控传入的材料。-n 间接应用IP地址,而不通过域名服务器。-o<输入文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保留。-p<通信端口> 设置本地主机应用的通信端口。-r 乱数指定本地与远端主机的通信端口。-s<起源位址> 设置本地主机送出数据包的IP地址。-u 应用UDP传输协定。-v 显示指令执行过程。-w<超时秒数> 设置期待连线的工夫。-z 应用0输出/输入模式,只在扫描通信端口时应用。TCP端口扫描> nc -v -z -w2 rumenz.com 20-30nc: connectx to rumenz.com port 20 (tcp) failed: Connection refusednc: connectx to rumenz.com port 21 (tcp) failed: Connection refusedfound 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif en0 src 192.168.0.105 port 57984 dst 203.195.152.245 port 22 rank info not available TCP aux info availableConnection to rumenz.com port 22 [tcp/ssh] succeeded!nc: connectx to rumenz.com port 23 (tcp) failed: Connection refusednc: connectx to rumenz.com port 24 (tcp) failed: Connection refusednc: connectx to rumenz.com port 25 (tcp) failed: Connection refusednc: connectx to rumenz.com port 26 (tcp) failed: Connection refusednc: connectx to rumenz.com port 27 (tcp) failed: Connection refusednc: connectx to rumenz.com port 28 (tcp) failed: Connection refusednc: connectx to rumenz.com port 29 (tcp) failed: Connection refusednc: connectx to rumenz.com port 30 (tcp) failed: Connection refused20-30是端口范畴UDP端口扫描> nc -v -z -w2 -u rumenz.com 20-25found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 63603 dst 203.195.152.245 port 20 rank info not availableConnection to rumenz.com port 20 [udp/ftp-data] succeeded!found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 51642 dst 203.195.152.245 port 21 rank info not availableConnection to rumenz.com port 21 [udp/ftp] succeeded!found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 58180 dst 203.195.152.245 port 22 rank info not availableConnection to rumenz.com port 22 [udp/ssh] succeeded!found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 57409 dst 203.195.152.245 port 23 rank info not availableConnection to rumenz.com port 23 [udp/telnet] succeeded!found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 59767 dst 203.195.152.245 port 24 rank info not availableConnection to rumenz.com port 24 [udp/*] succeeded!found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src 192.168.0.105 port 58696 dst 203.195.152.245 port 25 rank info not availableConnection to rumenz.com port 25 [udp/smtp] succeeded!扫描指定端口> nc -v json.im 80found 0 associationsfound 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif en0 src 192.168.0.105 port 58683 dst 150.109.147.28 port 80 rank info not available TCP aux info availableConnection to json.im port 80 [tcp/http] succeeded!建设 C/S 聊天室nc 的实质是在两台机器之间建设连贯,之后就能够基于这个连贯做很多事件,数据传输是其中一个最为根本的。咱们上面就应用 nc 来建设一个 C/S 的聊天室。模仿 Server 端> nc -v -l 127.0.0.1 8086监听8086端口模仿 Client 端> nc -v -p 8085 localhost 8086-p : 指定源端口 ...

August 24, 2021 · 3 min · jiezi

关于linux:openSUSE安装scrcpy详细教程

前记腾讯没有 Linux 版本的微信,所以日常办公时,我都是用网页版的。然而最近我发现,网页版对发送图片的压缩,曾经丧心病狂了。发给共事的截图,糊得字都看不清!所以想要应用scrcpy,把手机投屏到电脑上,而后在电脑上操作微信。装置scrcpy教程须要装置调试套件android-tools,scrcpy,而后写一个配置文件,就行了。 装置 android-toolssudo zypper in android-tools 装置 scrcpy这个没有方法,通过zypper装置了,因为openSUSE官网的软件源里,临时没有scrcpy,须要在https://software.opensuse.org里搜。 选本人零碎对应的版本,比方 leap 15.2、tumbleweed等。有官网实验性的软件包(黄色的),也有社区的包(红色的)。我抉择了,官网实验性的包。 点击蓝色的「一键装置」,就很省事了,下载一个 scrcyp.ymp 文件,而后双击它,YaST就会主动为咱们装置了。 配置文件首先,创立 ~/.android/adb_usb.ini 配置文件,写入手机的供应商号等信息。步骤如下: (1)执行查看usb信息的命令 jo@gome-suse:~> lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 004: ID 04f2:b541 Chicony Electronics Co., Ltd Bus 001 Device 005: ID 8087:0a2a Intel Corp. Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying ReceiverBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubjo@gome-suse:~> (2)用数据线,把手机插在笔记本的usb上 ...

August 24, 2021 · 1 min · jiezi

关于linux:一次-ssh-互信免密码登陆失败的调试经历

1 问题背景形容:k8s 节点间(包含与本人的互信)建设互信后,发现登陆并没有免密。互信建设操作如下 # ssh-keygen -t rsa# ssh-copy-id -i .ssh/id_rsa.pub root@<remote ip>为不便形容:这里设定为A与B互信操作后,A机器上ssh B不须要明码,B机器上ssh A须要明码 2 排查这里百度参考了一位大神的调试步骤,跟着验证了一遍 2.1 debug 日志首先要拿到明细的 Debug 日志,看看卡在那里。linux很多命令都带又调试性能,ssh就自带debug性能:B机器上连A (调试的时候将localhost换为A的IP) # ssh -vvv localhostOpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for *debug2: ssh_connect: needpriv 0debug1: Connecting to localhost [127.0.0.1] port 22.debug1: Connection established.debug1: identity file /home/work/.ssh/identity type -1debug1: identity file /home/work/.ssh/identity-cert type -1...debug3: remaining preferred: keyboard-interactive,password// 启用公钥登录debug3: authmethod_is_enabled publickeydebug1: Next authentication method: publickeydebug1: Trying private key: /home/work/.ssh/identitydebug3: no such identity: /home/work/.ssh/identitydebug1: Offering public key: /home/work/.ssh/id_rsadebug3: send_pubkey_test// 发送公钥包,期待服务器认证响应debug2: we sent a publickey packet, wait for replydebug3: Wrote 368 bytes for a total of 1741debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,passworddebug1: Trying private key: /home/work/.ssh/id_dsadebug3: no such identity: /home/work/.ssh/id_dsadebug1: Trying private key: /home/work/.ssh/id_ecdsadebug3: no such identity: /home/work/.ssh/id_ecdsa// 没通过认证,禁用该认证办法debug2: we did not send a packet, disable methoddebug3: authmethod_lookup passworddebug3: remaining preferred: ,passworddebug3: authmethod_is_enabled password// 下一个认证办法:启用明码登录debug1: Next authentication method: passwordwork@localhost's password: 能够看到,的确是认证失败了,然而仅凭一句 we did not send a packet, disable method,咱们还是无奈看到失败的深层次起因,那咱们再比照下失常的认证流程应该是怎么的: ...

August 24, 2021 · 3 min · jiezi

关于linux:如何设计一个好用的系统优麒麟设计师这样说

可用性是好的用户体验的要害局部,零碎的高可用性是优麒麟团队从头至尾的谋求。在 UKUI 桌面环境设计和开发的过程中,团队以用户为核心,从设计和技术上进行欠缺,在开发过程中一直发现问题,并寻找解决问题的最佳计划,致力于晋升零碎的用户体验。 什么是可用性?可用性(Usability)指用户能够轻松实现某产品既定工作的能力,即用户如何很好的应用零碎性能来实现他们的指标。国际标准化组织在人机交互的人机工程学第 11 局部中形容了可用性的定义: “Usability: The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.” —— ISO(国际标准化组织)人机交互的人机工程学-第11局部:可用性:定义和概念 可用性衡量标准那么,一个零碎的可用性水平该如何掂量呢?在交互式操作系统中,咱们通常从以下两个方面去测试、三个规范去度量: 两个方面表现力(Performance)--用户无效实现既定工作的工夫、完成度和错误率。 首先给定一个工作,该工作必须对于零碎的次要工作流程,在用户进行操作时,察看、统计用户的操作失误次数和工作实现工夫,并且计算工作的成功率。应用尼尔森 Nielsen Norman Group(NN/g)提供的计算倡议:齐全实现用户比例+局部实现用户比例*0.5。同时,将用户操作时所通过的流程数、页面数带入公式,计算出用户迷失度,用户迷失度 lostness= sqrt[ (N/S-1)2 + (R/N-1)2 ],其中: N = 用户在实现工作的过程中,拜访不同页面的总数 S = 用户在实现工作的过程中,拜访的页面总数 R = 用户通过实现该工作所需拜访的最小页面数(现实门路)。 满意度(Satisfaction)--通过肯定的定量和定性钻研数据,来计算用户对系统应用的满意度。 目前有很多的可用性计算形式和度量规范,咱们能够应用最广泛的 SUS 问卷以及 think aloud 工具来调研实在用户,记录用户应用过程中的舆论,剖析其属性。问卷数据能够通过相干计算方法得出,查看数据处在哪一个用户满意度层级,是可承受的、边缘程度的还是不可承受的。 三个规范1.使工作轻松直观 2.最小化应用步骤和阻碍 3.反对用户的操作工作,指引他们如何去做 优麒麟零碎可用性体现1)利用装置的表现力较好 在优麒麟开源操作系统中,咱们测试了软件装置的可用性表现力,体验者第一次应用零碎时,在网页端下载 Linux 版本的 WPS 软件,有超过四步的流程以及 0.6 的用户体验迷失度(规范为 ≤0.4),如果从麒麟软件商店(图1)中下载利用,即可省去多个步骤,进步下载成功率,用户体验迷失度能够达到大概 0.3(规范为 ≤0.4),在软件商店能够间接关上下载好的利用,并且,在下载过程中能够随时暂停、勾销等等,思考了多个用户场景(图2)。 ...

August 24, 2021 · 1 min · jiezi

关于linux:Linux-之-export-命令

export命令用于将shell变量输入为环境变量,或者将shell函数输入为环境变量。 一个变量创立时,它不会主动地为在它之后创立的shell过程所知。而命令export能够向前面的shell传递变量的值。 命令语法export [参数] 命令参数-f:指向函数。-n:删除变量的导出属性。-p:显示全副领有导出属性的变量。-pf:显示全副领有导出属性的函数。-nf:删除函数的导出属性。列出以后所有的环境变量> export -pdeclare -x CLASSPATH=".:/opt/java/jdk1.8.0_231/lib:/opt/java/jdk1.8.0_231/jre/lib"declare -x HISTCONTROL="ignoredups"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="JD"declare -x JAVA_HOME="/opt/java/jdk1.8.0_231"declare -x JAVA_OPTS="-server -Xms4096m -Xmx4096m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m"declare -x JRE_HOME="/opt/java/jdk1.8.0_231/jre"declare -x LANG="en_US.UTF-8"declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"declare -x LOGNAME="root"定义环境变量> export RUMENZ定义环境变量赋值> export RUMENZ=7导出一个函数导出一个func_1的函数> function func_1(){ echo "123"; }测试函数输入> func_1123在一个bash脚本中调用func_1> vim test.sh#!/bin/bashfunc_1//执行这个脚本,报错> bash test.shtest.sh: line 3: func_1: command not found在脚本中也能失常调用func_1函数,这时候就用到了export> export -f func_1//查看定义的函数> export -pffunc_1 () { echo '123'}declare -fx func_1删除func_1的导出属性> export -fn func_1//再执行脚本> bash test.shtest.sh: line 3: func_1: command not found让导出的变量永恒失效在命令行导出的各种变量,函数只是长期无效,下次从新登录,之前定义的变量,函数都将不存在。如果想让咱们定义的变量,函数每次登录零碎都能够用,那么就须要把变量的定义和导出都定义在一个文件外面,而后每次登录零碎都会执行一遍该文件就能够达到目标。 ...

August 23, 2021 · 1 min · jiezi

关于linux:如何使用nload实时监控网络带宽

nload是一个可实时监督网络流量和带宽应用状况的工具。它能够帮忙你应用图表监输出和输入的流量,并提供其余信息,例如传输的数据总量和最小/最大网络使用率。零碎环境Centos7 装置在基于CentOS/RHEL的零碎上首先装置epel软件源,能够轻松地装置nload工具。 [root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/rep...[root@localhost ~]# yum makecache[root@localhost ~]# yum -y install nload如何应用nload监控网络流量启动nload后,能够通过按左右箭头键在网卡之间切换(能够在命令行上指定设施,也能够自动检测设施): [root@localhost ~]# nload如何应用nload实时监控网络带宽如何应用nload实时监控网络带宽能够在命令行上指定网卡名称 [root@localhost ~]# nload ens38如何应用nload实时监控网络带宽如何应用nload实时监控网络带宽运行nload之后,能够应用以下快捷键:: 应用左右箭头键或Enter / Tab键将显示切换到下一个网卡。应用F2显示选项窗口。应用F5将以后设置保留到用户配置文件中。应用F6从配置文件中从新加载设置。应用q或Ctrl + C退出nload。一次显示多个设施,不显示流量图,能够应用-m选项。箭头键来回切换屏幕上显示的设施数量: [root@localhost ~]# nload -m如何应用nload实时监控网络带宽如何应用nload实时监控网络带宽应用-a 选项,设置计算工夫窗口的长度(以秒为单位)。 [root@localhost ~]# nload -a 400-t interval选项设置显示的刷新距离(以毫秒为单位,默认值为500)。请留神,将刷新距离指定为小于大概100毫秒会使流量计算不准确: [root@localhost ~]# nload -ma 400 -t 600想要理解更多选项能够应用nload --help命令。 总结nload是一个可实时监督网络流量和带宽应用状况的工具。它能够帮忙你应用图表监输出和输入的流量,并提供其余信息,例如传输的数据总量和最小/最大网络使用率。

August 23, 2021 · 1 min · jiezi

关于linux:手把手教centos安装redis及开启多个实例

[TOC] 装置redis形式多样,最简略是用docker来一键装置。这篇文章应用源码装置形式,能够更分明理解redis的装置配置过程。 版本阐明CentOS-7 redis-6.2.5 装置redis官网下载安装包并解压到当前目录 tar -zxvf redis-6.2.5.tar.gz 进入redis-6.2.5目录 cd redis-6.2.5更新linux上的装置工具包 yum -y install gcc-c++执行编译命令 make执行装置命令 make install开启多实例

August 22, 2021 · 1 min · jiezi

关于linux:Linux-之-yum-命令

yum命令 是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它能够使系统管理人员交互和自动化地更新与治理RPM软件包,可能从指定的服务器主动下载RPM包并且装置,能够主动解决依赖性关系,并且一次装置所有依赖的软体包,毋庸繁琐地一次次下载、装置。yum提供了查找、装置、删除某一个、一组甚至全副软件包的命令,而且命令简洁而又好记。命令格局yum(选项)(参数) 命令选项-h:显示帮忙信息;-y:对所有的发问都答复“yes”;-c:指定配置文件;-q:宁静模式;-v:具体模式;-d:设置调试等级(0-10);-e:设置谬误等级(0-10);-R:设置yum解决一个命令的最大等待时间;-C:齐全从缓存中运行,而不去下载或者更新任何头文件命令参数install:装置rpm软件包;update:更新rpm软件包;check-update:查看是否有可用的更新rpm软件包;remove:删除指定的rpm软件包;list:显示软件包的信息;search:查看软件包的信息;info:显示指定的rpm软件包的形容信息和概要信息;clean:清理yum过期的缓存;shell:进入yum的shell提示符;resolvedep:显示rpm软件包的依赖关系;localinstall:装置本地的rpm软件包;localupdate:显示本地rpm软件包进行更新;deplist:显示rpm软件包的所有依赖关系。主动搜寻最快镜像插件> yum install yum-fastestmirror查看可能批量装置的列表> yum grouplistAvailable Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Cinnamon Desktop MATE Desktop Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative WorkstationAvailable Groups: Cinnamon Compatibility Libraries Console Internet Tools Development Tools Educational Software Electronic Lab Fedora Packager General Purpose Desktop Graphical Administration Tools Haskell LXQt Desktop Legacy UNIX Compatibility MATE Milkymist Scientific Support Security Tools Smart Card Support System Administration Tools System Management TurboGears application framework XfceDone比方:yum groupinstall "Basic Web Server"装置redis> yum install redis -y更新零碎中所有的RPM包> yum update更新指定的软件包(如:redis)> yum update redis查看可更新的程序> yum check-update查看零碎中是否装置某个软件(如:nginx)> yum list installed | grep nginx显示安装包信息> yum info nginxInstalled PackagesName : nginxArch : x86_64Epoch : 1Version : 1.16.1Release : 1.el7.ngxSize : 2.7 MRepo : installedFrom repo : nginxSummary : High performance web serverURL : http://nginx.org/License : 2-clause BSD-like licenseDescription : nginx [engine x] is an HTTP and reverse proxy server, as well as : a mail proxy server.Available PackagesName : nginxArch : x86_64Epoch : 1Version : 1.18.0Release : 2.el7.ngxSize : 769 kRepo : nginx/x86_64Summary : High performance web serverURL : http://nginx.org/License : 2-clause BSD-like licenseDescription : nginx [engine x] is an HTTP and reverse proxy server, as well as : a mail proxy server.显示所有曾经装置和能够装置的程序包> yum list显示指定程序包装置状况> yum list nginx删除程序包> yum remove nginx 查看软件包的依赖状况> yum deplist nginx革除缓存目录下的软件包> yum clean packages革除缓存目录下的 headers> yum clean headers革除缓存目录下旧的 headers> yum clean oldheaders分明缓存目录下的所有软件包及旧的headers> yum clean all强制解除yum锁定> rm -rf /var/run/yum.pidyum减速更新国内源> cd /etc/yum.repos.d> mv CentOS-Base.repo CentOS-Base.repo.bk//更新为阿里云的源> wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo //更新为163的源> wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo //更新为搜狐的源> wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.sohu.com/help/CentOS-Base-sohu.repo> yum clean all> yum makecache原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 22, 2021 · 2 min · jiezi

关于linux:Shell脚本在当前终端添加环境变量的正确姿势

在Linux中咱们常常须要设置一些环境变量,设置环境变量的形式有很多,有些是对以后用户无效的,有些是对所有用户无效的,有些是永恒的。很多时候咱们会有这样的需要,只有在以后终端中让设置的环境变量失效,这样退出该终端后不影响其余程序的运行。个别能够通过export命令来设置环境编写,比方设置动静库加载门路export LD_LIBRARY_PATH=./lib。如果须要配置的环境变量很多,或者每次做某件工作前都得配置这些环境变量,这时通过手动输出命令的形式就很不不便了,这时就须要shell脚本退场。咱们能够将配置的命令写到shell脚本中,这样只用执行一下脚本就能实现工作了,程序员的准则就是能用脚本做的事件绝不入手。写好脚本set_env.sh后,咱们欢欣鼓舞的在以后终端中执行./set_env.sh,却会发现设置并没有失效,用export命令查看也没有看到新的配置。要害起因就在于通过./set_env.sh这种形式执行一个脚本文件其实脚本中的命令是在子shell中运行的,执行的后果只对子shell无效,并不会在父shell中失效。这种状况下正确的姿态就是应用source set_env.sh,这样设置的环境变量就会在以后终端中失效。source命令的作用是在以后bash终端下读取并执行shell文件中的命令。更简略的命令是. set_env.sh,点命令(.)和source是等效的。

August 22, 2021 · 1 min · jiezi

关于linux:linux环境变量设置

在Linux中咱们常常须要设置一些环境变量,上面列举一些常见的环境变量设置形式。读取环境变量export :显示以后零碎定义的所有环境变量echo $PATH :输入以后的PATH环境变量的值设置环境变量之以后终端:export PATHexport PATH=/you/bin/path:$PATHps:设置的环境变量中不要忘了加上原来的配置,即$PATH局部,防止笼罩原来配置。 失效工夫:立刻失效失效期限:以后终端无效,窗口敞开后有效失效范畴:仅对以后用户无效设置环境变量之以后用户:vim ~/.bashrc,vim ~/.bash_profile批改用户目录下的~/.bashrc或者~/.bash_profile文件进行配置: vim ~/.bashrc,在文件最初一行加上export PATH=/you/bin/path:$PATH。vim ~/.bash_profile,在文件最初一行加上export PATH=/you/bin/path:$PATH。失效工夫:应用雷同的用户关上新的终端时失效,或者手动执行source ~/.bashrc、source ~/.bash_profile立刻失效失效期限:永恒无效失效范畴:仅对以后用户无效设置环境变量之所有用户:vim /etc/bashrc,vim /etc/profile,vim /etc/environment批改零碎配置文件,这种形式须要管理员权限(如root)或者用户有对该零碎配置文件的写入权限: vim /etc/bashrc,在文件最初一行加上export PATH=/you/bin/path:$PATH。vim /etc/profile,在文件最初一行加上export PATH=/you/bin/path:$PATH。vim /etc/environment,在文件最初一行加上export PATH=/you/bin/path:$PATH。ps:如果零碎配置文件不可编辑,则须要批改其属性,例如:chmod -v u+w /etc/bashrc。 失效工夫:新开终端失效,或者手动source /etc/bashrc、source /etc/profile、source /etc/environment失效失效期限:永恒无效失效范畴:对所有用户无效小技巧能够在xxxx我的项目下定义一个变量配置文件xxxx.profile,在该文件中应用export定义一系列变量,而后在~/.bash_profile文件前面加上:source xxxx.profile,这样每次登陆都能够在Shell脚本中应用自定义的一系列变量。应用alias命令定义一些命令的别名,比方alias rm="rm -i",而后把这个代码退出到~/.bash_profile中,这样每次应用rm命令的时候,都相当于应用rm -i命令,十分不便。

August 22, 2021 · 1 min · jiezi

关于linux:docker常用命令记住了你就进了一半的门咯

docker 常用命令1. 帮忙命令docker version # 查看docker版本信息docker info # 查看docker零碎信息,包含容器和镜像数量docker 命令 --help # 帮忙命令2. 镜像命令docker images # 查看所有镜像docker search #搜寻镜像docker pull 镜像名[:tag] # 下载镜像,如果不写tag,默认是latestdocker rmi 镜像id # 删除指定镜像3. 容器命令docker run [可选参数] 镜像id # 新建容器并启动,参数阐明: # --name = "name" 容器名字 # -d 后盾形式运行 # -it 交互方式运行 # -p 主机端口:容器端口 指定容器端口 # -P(大写) 随机指定容器端口 docker ps # 列出所有运行的的容器docker rm 容器id # 删除指定容器docker start 容器id # 启动指定容器docker restart 容器id # 重启指定容器docker stop 容器id # 进行指定容器docker kill 容器id # 强制进行指定iddocker logs --tail n 容器id # 查看n行日志docker top 容器id # 查看容器过程docker inspect 容器id # 查看容器的元数据docker exec -it 容器id /bin/bash # 进入正在运行的容器,开启一个新终端docker attach 容器id # 进入容器正在执行的终端exit # 容器间接退出ctrl +P +Q # 容器不进行退出docker cp 容器id:容器内门路 主机目标门路 # 容器内拷到主机上

August 22, 2021 · 1 min · jiezi

关于linux:Linux-之-uniq-命令

显示或疏忽反复的行。命令格局uniq [选项]... [文件] 命令选型-c, --count 在每行结尾减少反复次数。-d, --repeated 所有邻近的反复行只被打印一次。-D 所有邻近的反复即将全副打印。--all-repeated[=METHOD] 相似于 -D,但容许每组之间以空行宰割。METHOD取值范畴{none(默认),prepend,separate}。-f, --skip-fields=N 跳过对前N个列的比拟。--group[=METHOD] 显示所有行,容许每组之间以空行宰割。METHOD取值范畴:{separate(默认),prepend,append,both}。-i, --ignore-case 疏忽大小写的差别。-s, --skip-chars=N 跳过对前N个字符的比拟。-u, --unique 只打印非邻近的反复行。-z, --zero-terminated 设置行终止符为NUL(空),而不是换行符。-w, --check-chars=N 只对每行前N个字符进行比拟。--help 显示帮忙信息并退出。--version 显示版本信息并退出。命令参数INPUT(可选):输出文件,不提供时为规范输出。OUTPUT(可选):输入文件,不提供时为规范输入。命令返回值返回0示意胜利,返回非0值示意失败。试验文本> cat 1.txt123456789123123333123eeerrr相邻行去重> uniq 1.txt123456789123333123eeerrr文件每行排序后,相邻行去重> sort 1.txt | uniq123333456789eeerrr//或者> sort -u 1.txt 123333456789eeerrr统计各行在文件中呈现的次数> sort 1.txt | uniq -c 4 123 1 333 1 456 1 789 1 eee 1 rrr先排序后统计反复的次数查找文件中反复的行> sort 1.txt | uniq -d123uniq只检测邻近的行是否反复,sort -u将输出文件先排序而后再解决反复行疏忽每行的前N个字符> uniq -s 3 1.txt疏忽每行的前3个字符,比拟前面的字符只对前N个字符进行比拟> uniq -w 3 1.txt只对每行的前3个字符进行比拟原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 21, 2021 · 1 min · jiezi

关于linux:Linux-之-bc-命令

bc命令 是一种反对任意精度的交互执行的计算器语言。bash内置了对整数四则运算的反对,然而并不反对浮点运算,而bc命令能够很不便的进行浮点运算,当然整数运算也不再话下。命令语法bc(选项)(参数) 命令选项-i:强制进入交互式模式;-l:定义应用的规范数学库;-w:对POSIX bc的扩大给出正告信息;-q:不打印失常的GNU bc环境信息;-v:显示指令版本信息;-h:显示指令的帮忙信息。命令参数文件:指定蕴含计算工作的文件。浮点数计算> echo "123.23*2" | bc246.46设定小数精度(数值范畴)> echo "scale=2;3/8" | bc.37但在做除法运算时,如果后果值小于1,小数后面的0是缺失的:bc除法后面补0> echo $(printf "%.2f" `echo "scale=2;3/8"|bc`)0.37十进制转二进制> echo "obase=2;192" | bc11000000二进制转十进制> echo "obase=10;ibase=2;11000000" | bc192bc计算n次方> echo "10^10" | bc10000000000计算平方根> echo "scale=2;sqrt(10)" | bc3.16原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 20, 2021 · 1 min · jiezi

关于linux:记录一下linux-514-中-listen-的实现

概述面试时候选人提到了半连贯,全连贯队列别离由内核中的常量,backlog参数决定。这个和之前的了解不符,于是看代码一探到底。 源码分析源码版本:https://github.com/torvalds/l...d992fe5318d8d7af9510b879439a3c7f283da442 入口搜寻"sys_listen", 能够看到,backlog的确是取了用户传入和sysctl_somaxconn的最小值。 int __sys_listen(int fd, int backlog){ struct socket *sock; int err, fput_needed; int somaxconn; sock = sockfd_lookup_light(fd, &err, &fput_needed); if (sock) { somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn; if ((unsigned int)backlog > somaxconn) backlog = somaxconn; err = security_socket_listen(sock, backlog); if (!err) err = sock->ops->listen(sock, backlog); fput_light(sock->file, fput_needed); } return err;}listen的实现能够看到sock->ops是一个函数指针构造体,搜寻"sock->ops = ",能够找到一系列proto_ops。挑base_sock_ops持续看。 static const struct proto_ops base_sock_ops = { .family = PF_ISDN, .owner = THIS_MODULE, .release = base_sock_release, .ioctl = base_sock_ioctl, .bind = base_sock_bind, .getname = sock_no_getname, .sendmsg = sock_no_sendmsg, .recvmsg = sock_no_recvmsg, .listen = sock_no_listen, .shutdown = sock_no_shutdown, .connect = sock_no_connect, .socketpair = sock_no_socketpair, .accept = sock_no_accept, .mmap = sock_no_mmap};发现大部分的proto_ops都没有定义listen的实现。搜寻".listen =",能够找到有 svc_listen, dn_listen, unix_listen, vsock_listen, x25_listen等. 从命名和文件头的形容,猜想inet_listen是理论用的listen,即socket_addr中指定的协定。持续看inet_listen。能够看到backlog赋值给了sk->sk_max_ack_backlog,搜寻发现其它listen函数也是如此。 ...

August 20, 2021 · 3 min · jiezi

关于linux:Linux上清理oracle-listenerlog文件脚本

Linux上清理oracle listener.log文件脚本,配合crontab定时清理大于1000MB的listener.log #!/bin/bash# This script is used to clean up Oracle Database listener.log on Linux# Please use the Oracle DB installation user(such as oracle) to execute the script# Originally written by Xander.Cui# Use two methods to obtain the absolute path of listener.log, only for detection.# 2. Obtain the standard listener.log file name# export listenerlog=$ORACLE_BASE/diag/tnslsnr/$(hostname)/listener/trace/listener.log# export listenerlogbak=$listenerlog-$DateMarksource ~/.bash_profileexport DateMark=$(date +'%Y%m%d')export DT=$(date +'%F %T')# Check if the log directory exists, create it if it does not existexport logdir=~/logexport checklog=$logdir/listenerlog_check.logif [ ! -d $logdir ]; then mkdir -p $logdir echo " $DT Checked: Created $logdir " >$checklogfi# 1. Obtain listener.log through lsnrctl statusexport xmlfile=$(lsnrctl status | grep "log.xml" | awk '{print $4}')export prefixlog=${xmlfile%%/alert*}export listenerfile=$prefixlog/trace/listener.logexport listenerfilebak=$listenerfile-$DateMark# Calculate the size of the listener.log file in MB, Use the file name obtained by method 1export logsizemb=$(du -sm $listenerfile | awk '{print $1}')# Operating listener.log fileif [ $logsizemb -gt 1000 ]; then echo "*************** Moved ************** $DT Checked: Backup Logfile $listenerfile to $listenerfilebak.tar.gz " >>$checklog mv $listenerfile $listenerfilebak;tar -zcPf $listenerfilebak.tar.gz $listenerfilebak --remove-fileselse echo "$DT Checked: Logfile($listenerfile) Size < 1000 MB, Do nothing." >>$checklogfi# End应用命令增加定时工作 ...

August 20, 2021 · 1 min · jiezi

关于linux:Linux指令入门文件管理

工具与资源核心帮忙开发者更加高效的工作,提供围绕开发者全生命周期的工具与资源https://developer.aliyun.com/... 体验简介场景将提供一台配置了Aliyun Linux 2操作系统的ECS实例(云服务器)。通过本教程的操作,您能够学习Linux零碎中罕用的文件治理命令。 创立资源开明资源 在试验主页面,页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。单击屏幕右侧 创立资源 ,收费创立以后实验所需云产品资源。阐明: 资源创立过程须要1~3分钟。实现试验资源的创立后,您能够在 云产品资源 列表查看已创立的资源信息,例如:IP地址、子用户名称和子用户明码等。 磁盘治理命令1、cat命令。cat命令形容:该命令用于连贯文件并打印到规范输出设备上。 cat命令语法: cat [参数] [文件名]参数阐明:-n 由1开始对所有输入的行数进行编号。 -b 由1开始对所有输入的行数进行编号,对于空白行不编号。 -s 当遇到有间断两行以上的空白行,就替换为一行的空白行。 -E 在每行完结处显示$。 -T 将 TAB 字符显示为^I。 cat命令应用示例: a. 执行如下命令,将一个自增序列写入test1.txt文件中。 for i in $(seq 1 10); do echo $i >> test1.txt ; doneb. 执行如下命令,查看文件test1.txt内容。 cat test1.txt返回后果如下所示。c. 执行如下命令,将test1.txt的文件内容加上行号后输出到test2.txt文件。 cat -n test1.txt > test2.txt d. 执行如下命令,查看文件test2.txt内容。 cat test2.txt返回后果如下所示。 e. 执行如下命令,将test1.txt文件内容清空。 cat /dev/null > test1.txt f. 执行如下命令,查看文件test1.txt内容。 cat test1.txt返回后果如下所示,您能够看到test1.txt文件没有任何内容。 ...

August 20, 2021 · 1 min · jiezi

关于linux:Linux命令egrep

作用:寻找匹配指定模式的文本. 命令格局 egrep Options "regex pattern" InputFile1 InputFile2 ...egrep 等价于 grep -E. 示例输出: [ming@localhost test]$ cat data.txt abcd123456789efgh123987654123abcd[ming@localhost test]$ cat data1.txt abcd123456789efgh123987654[ming@localhost test]$ cat data2.txt abcd123456789efgh123987654[ming@localhost test]$ cat data3.txt 123456ABCD1231. 输入匹配模式的行 [ming@localhost test]$ egrep "^[a-z]+" data.txt abcd123efgh123[ming@localhost test]$ egrep "[a-z]+" data1.txt data2.txt data1.txt:abcd123data1.txt:efgh123data2.txt:abcd123data2.txt:efgh123输入匹配行的行号:-n [ming@localhost test]$ egrep -n "^[a-z]+" data.txt 1:abcd1233:efgh123[ming@localhost test]$ egrep -n "[a-z]+" data1.txt data2.txt data1.txt:1:abcd123data1.txt:3:efgh123data2.txt:1:abcd123data2.txt:3:efgh123只输入匹配的行数:-c [ming@localhost test]$ egrep -c "^[a-z]+" data.txt 22. 只输入匹配模式的内容: -o [ming@localhost test]$ egrep -o "^[a-z]+" data.txt abcdefgh3. 反向匹配: -v ...

August 20, 2021 · 1 min · jiezi

关于linux:Linux之alias命令

Linux alias命令用来设置指令的别名,对一些较长的命令进行简化。应用alias时,必须应用单引号将原来的命令蕴含,避免特殊字符导致谬误。命令格局alias [-p] [name[=value] ...] 命令性能简化较长的命令。定义一个或多个别名。批改一个或多个已定义别名的值。显示一个或多个已定义别名。显示全副已定义的别名。命令选项-p:显示全副已定义的别名。命令参数name(可选):指定要(定义、批改、显示)的别名。value(可选):别名的值。显示零碎中曾经定义的别名> alias -palias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'只给以后用户设置命令别名> vim ~/.bashrcalias rm='rm -i'> source ~/.bashrc批改以后用户家目录下的.bashrc文件定义的别名对系统中所有的用户都失效> vim /etc/bashrcalias rm='rm -i'> source /etc/bashrc或者批改/etc/profile> vim /etc/profilealias rm='rm -i'> source /etc/profile显示已定义的别名> alias ls定义或批改别名的值> alias ls='ls --color=auto'> alias ls='ls --color=never' grep='grep --color=never'删除一个别名> unalias ls原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 19, 2021 · 1 min · jiezi

关于linux:Linux命令awk

作用:文本处理工具. 命令格局 awk Options 'Program-Text' InputFile1 InputFile2 ...对输出文件 InputFile1 InputFile2 ... 执行给定的程序 Program-Text. 罕用选项 -F sep: 自定义字段分隔符为 sep.-f ScriptFile: 从 ScriptFile 文件中读取 awk 脚本.记录 默认的记录分隔符为换行符. 能够通过内建变量 RS 来自定义记录分隔符. RS 的值能够是单个字符,也能够是正则表达式. 如果将 RS 设为空字符串,则 awk 将以空白行来宰割记录,且以换行符作为字段分隔符. 字段 awk 将每个记录宰割为多个字段. 默认的字段分隔符是任意的空白符. 能够通过 -F 选项或 FS 内建变量来自定义字段分隔符. FS 的值能够是单个字符,也能够是正则表达式. 如果 FIELDWIDTHS 变量被设置为以空格分隔的一系列数字,则每个字段将有对应数量的字符. 此时疏忽 FS. 如果 FPAT 变量被设置为一个正则表达式,则每个字段将是匹配该正则的内容. FPAT 的优先级最低. $0 代表整个记录、$1 代表记录中的第1个字段、$2 代表第2个字段、$11 代表第11个字段 ... ($ 只用于援用字段,应用变量时,间接应用变量名即可) NF 变量的值是以后记录中的字段数. 模式 Program-Text 为: ...

August 19, 2021 · 2 min · jiezi

关于linux:0104-Linux常用命令网络相关

网络相干命令ifconfig:查看网卡信息 [root@localhost chmod_test]# ifconfigenp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.112 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::6f25:133:e614:f7c4 prefixlen 64 scopeid 0x20<link> ether 08:00:27:b5:11:ba txqueuelen 1000 (Ethernet) RX packets 1710 bytes 128876 (125.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 549 bytes 59638 (58.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 4 bytes 344 (344.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 344 (344.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ping:测试近程主机联通性 ...

August 19, 2021 · 1 min · jiezi

关于linux:0103-Linux常用命令文本处理

文本处理vi/vim:文本编辑 vim 有三种模式: 个别模式:默认编辑模式命令模式个别模式挪动光标删除、复制与粘贴编辑模式进入编辑模式的形式: 命令模式搜寻与替换保留、退出等echo:屏幕输入,相当于 Python 中的 print() >:输入重定向

August 19, 2021 · 1 min · jiezi

关于linux:0102-Linux常用命令文件处理

帮忙文档man:用于查看命令的帮忙文档 格局:man 须要查问的命令 例如:man ls 相干快捷键应用: 退出:q 下一页:空格键 高低挪动:高低方向键 --help:也能够用于查看帮忙文档 格局:须要查问的命令 --help 文件治理命令ls:用于列出指定目录或者文件 罕用形式: ls -l = llls -a:显示所有文件,蕴含暗藏文件cd:用于切换用户所在的目录 罕用形式: cd:如果前面什么都不跟,间接进入以后用户的根目录下cd 门路:能够是绝对路径,或者相对路径cd ..:返回上一级目录其余: 长于利用门路的主动补全性能,按 Tab 键 pwd:显示当前目录的绝对路径 mkdir:创立新目录 格局:mkdir [-mp] [目录名称] 罕用形式: mkdir 目录名称mkdir -p 目录名称:可能递归创立文件夹touch:创立空文件 罕用形式: touch 文件名rm:删除文件或者目录,审慎应用 罕用形式: rm -r 文件或文件夹目录:删除目录前会征询[root@localhost test1]# rm -r rm_testrm:是否删除目录 "rm_test"?yrm -f 文件或文件夹目录:辨识强制删除,不会征询,而是间接删除rm -rf 文件或文件夹目录留神:rm -rf 前面不能间接加 /,否则会导致整个系统文件被全副删除,十分危险 cp:复制 格局:cp [选项] [起源文件(要复制的文件)] [目标文件(复制后的文件名)] 罕用形式: cp -r 起源文件 目标文件:用于复制目录[root@localhost test1]# mkdir 123[root@localhost test1]# cp 123 456cp: 略过目录"123"[root@localhost test1]# cp -r 123 456[root@localhost test1]# ll总用量 0drwxr-xr-x. 2 root root 6 12月 6 22:16 123drwxr-xr-x. 2 root root 6 12月 6 22:17 456mv:挪动或者重命名 ...

August 19, 2021 · 3 min · jiezi

关于linux:Linux命令sed

作用:用于解决文本的流编辑器. 命令格局 sed Options '[Address]Command' InputFile对输出文件 InputFile 中的每行执行给定的命令 Command. 如果指定了地址 Address,则只对符合条件的文本行执行 Command 命令. 罕用选项 -i: 原地批改,会扭转源文件中的内容.-n: 处理过程中,不要输入正在解决的文本行.-r: 应用正则表达式扩大.-f File: 从文件 File 中读取 sed 命令.地址 n: 第 n 行.[ming@localhost test]$ cat data.txt aa123aa456aaa789b123bb456bbb789[ming@localhost test]$ sed -n '2p' data.txt a123p: 打印行. $: 最初一行.[ming@localhost test]$ sed -n '$p' data.txt bbb789/regexp/: 匹配指定正则表达式的行.[ming@localhost test]$ sed -nr '/a+/p' data.txtaa123aa456aaa789[ming@localhost test]$ sed -nr '/a{2,}/p' data.txtaa456aaa789n~m: 从第 n 行开始,每 m 行便执行给定的命令.[ming@localhost test]$ cat data.txt aa123aa456aaa789b123bb456bbb789[ming@localhost test]$ sed -n '1~2p' data.txt aaa456b123bbb789addr1,addr2: 从 addr1 开始,到 addr2 完结,包含首尾.[ming@localhost test]$ sed -n '2,4p' data.txta123aa456aaa789[ming@localhost test]$ sed -n '/123/,/123/p' data.txta123aa456aaa789b123addr,+n: 从 addr 开始(包含),直到往后 n 行.[ming@localhost test]$ sed -n '2,+2p' data.txta123aa456aaa789[ming@localhost test]$ sed -nr '/a{3}/,+2p' data.txtaaa789b123bb4561. 替换: s/regexp/replacement/ ...

August 19, 2021 · 2 min · jiezi

关于linux:01-Linux系统与shell环境准备

Linux 内核 目前风行应用 CentOS Linux 与 Windows 的区别 Linux 目录构造由 "/" 根目录开始 shell常见的shell,其中,/bin/bash 最为罕用 近程连贯服务器举荐应用:MobaXterm 兼具 xshell 与 xftp 的性能,而且款式更好看,性能更弱小 下载连贯: MobaXterm官网下载 装置及根本应用 留神点:

August 19, 2021 · 1 min · jiezi

关于linux:Linux命令nmcli

作用:用于管制 NetworkManager 的命令行工具. 1. 查看连贯 列举出所有的连贯: [root@localhost ming]# nmcli connection show NAME UUID TYPE DEVICE enp0s3 08e656c0-38ac-4cd1-b885-ce919221a530 ethernet enp0s3 virbr0 37b8848a-8e82-4428-b286-a48f237649d1 bridge virbr0查看某个连贯的具体信息: [root@localhost ming]# nmcli connection show enp0s3connection.id: enp0s3connection.uuid: 08e656c0-38ac-4cd1-b885-ce919221a530connection.stable-id: --connection.type: 802-3-ethernetconnection.interface-name: enp0s3connection.autoconnect: yes...2. 新建连贯 为网卡 enp0s3 创立名为 conn1 的连贯. [root@localhost ming]# nmcli connection add type ethernet con-name conn1 ifname enp0s3 Connection 'conn1' (a64c5e48-eb89-41eb-81c5-6404f8379ee9) successfully added.[root@localhost ming]# ls /etc/sysconfig/network-scripts/ | grep conn1ifcfg-conn13. 启用、敞开连贯 [root@localhost ming]# nmcli connection up conn1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)[root@localhost ming]# nmcli connection down conn1 Connection 'conn1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)4. 批改连贯:IP地址 ...

August 19, 2021 · 3 min · jiezi

关于linux:linux下常见问题汇总

YUM装置软件遇到问题failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try. http:间接备份删除/etc/yum.repos.d/门路下所有repo文件,而后从另一台失常运行的服务器上,拷贝CentOS-Base.repo内容到/etc/yum.repos.d/目录下,重命名(可疏忽此步骤)文件为centos.repo,而后从新执行yum装置、更新命令,失常可用。 .

August 19, 2021 · 1 min · jiezi

关于linux:Linux之ack命令

ack是比grep好用的文本搜寻工具ack命令装置> yum install -y ack命令特点默认搜寻当前工作目录默认递归搜寻子目录疏忽元数据目录,比方.svn,.git,CSV等目录疏忽二进制文件(比方pdf,image,coredumps)和备份文件(比方foo~,*.swp)在搜寻后果中打印行号,有助于找到指标代码能搜寻特定文件类型(比方Perl,C++,Makefile),该文件类型能够有多种文件后缀高亮搜寻后果反对Perl的高级正则表达式,比grep所应用GNU正则表达式更有表现力。相比于搜寻速度,ack总体上比grep更快。ack的速度只有体现在它的内置的文件类型过滤器。在搜寻过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样防止查看多余的元数据目录。命令参数-n, 显示行号-l/L, 显示匹配/不匹配的文件名-c, 统计次数-v, invert match-w, 词匹配-i, 疏忽大小写-f, 只显示文件名,不进行搜寻.-h, 不显示名称-v, 显示不匹配在当前目录递归搜寻单词”eat”,不匹配相似于”feature”或”eating”的字符串:> ack -w eat搜寻有特殊字符的字符串’$path=.’,所有的元字符(比方’$',’.')须要在字面上被匹配:> ack -Q '$path=.' /etc除了temp目录,在所有目录搜寻use单词> ack use --ignore-dir=temp只搜寻蕴含'main'单词的Python文件,而后通过文件名把搜寻后果整合在一起,打印每个文件对应的搜寻后果> ack --python --group -w main ack反对的文件类型> ack --help-types--[no]actionscript .as .mxml --[no]ada .ada .adb .ads --[no]asm .asm .s --[no]asp .asp --[no]aspx .master .ascx .asmx .aspx .svc --[no]batch .bat .cmd --[no]cc .c .h .xs --[no]cfmx .cfc .cfm .cfml --[no]clojure .clj .cljs .edn .cljc --[no]cmake CMakeLists.txt; .cmake --[no]coffeescript .coffee --[no]cpp .cpp .cc .cxx .m .hpp .hh .h .hxx --[no]csharp .cs --[no]css .css --[no]dart .dart --[no]delphi .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj --[no]elisp .el --[no]elixir .ex .exs --[no]erlang .erl .hrl --[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp --[no]go .go --[no]groovy .groovy .gtmpl .gpp .grunit .gradle --[no]gsp .gsp --[no]haskell .hs .lhs --[no]hh .h --[no]hpp .hpp .hh .h .hxx --[no]html .htm .html .xhtml --[no]jade .jade --[no]java .java .properties --[no]js .js --[no]json .json --[no]jsp .jsp .jspx .jspf .jhtm .jhtml --[no]kotlin .kt .kts --[no]less .less --[no]lisp .lisp .lsp --[no]lua .lua; first line matches /^#!.*\blua(jit)?/ --[no]make .mk; .mak; makefile; Makefile; Makefile.Debug; Makefile.Release --[no]matlab .m --[no]objc .m .h --[no]objcpp .mm .h --[no]ocaml .ml .mli .mll .mly --[no]parrot .pir .pasm .pmc .ops .pod .pg .tg --[no]perl .pl .pm .pod .t .psgi; first line matches /^#!.*\bperl/ --[no]perltest .t --[no]php .php .phpt .php3 .php4 .php5 .phtml; first line matches /^#!.*\bphp/ --[no]plone .pt .cpt .metadata .cpy .py --[no]python .py; first line matches /^#!.*\bpython/ --[no]rake Rakefile --[no]rr .R --[no]rst .rst --[no]ruby .rb .rhtml .rjs .rxml .erb .rake .spec; Rakefile; first line matches /^#!.*\bruby/ --[no]rust .rs --[no]sass .sass .scss --[no]scala .scala --[no]scheme .scm .ss --[no]shell .sh .bash .csh .tcsh .ksh .zsh .fish; first line matches /^#!.*\b(?:ba|t?c|k|z|fi)?sh\b/ --[no]smalltalk .st --[no]smarty .tpl --[no]sql .sql .ctl --[no]stylus .styl --[no]swift .swift; first line matches /^#!.*\bswift/ --[no]tcl .tcl .itcl .itk --[no]tex .tex .cls .sty --[no]ts .ts .tsx --[no]tt .tt .tt2 .ttml --[no]vb .bas .cls .frm .ctl .vb .resx --[no]verilog .v .vh .sv --[no]vhdl .vhd .vhdl --[no]vim .vim --[no]xml .xml .dtd .xsd .xsl .xslt .ent .wsdl; first line matches /<[?]xml/ --[no]yaml .yaml .yml获取蕴含CFLAG关键字的Makefile的文件名> ack --make CFLAGack查找my.cnf文件> ack -f /etc/ | ack my.cnf//或者> ack -g my.cnf /etc/原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 18, 2021 · 2 min · jiezi

关于linux:Linux命令tcpdump

作用:网络抓包. 罕用选项 -c N: 在收到 N 个数据包后退出.-n: 以数字模式显示地址.-nn: 以数字模式显示端口号.-i Interface 侦听指定的网络接口.-Q direction: 指定数据包的方向(进入、进来、或者两者皆可);direction 可取值为 in,out,inout.-A: 以 ASCII 码的模式打印数据包的内容.-x: 以十六进制的模式打印数据包的内容.-e: 打印链路层头部信息.-t: 不要打印工夫戳.1. 侦听指定的网络接口 从指定的接口进入或进来: [root@localhost ~]# tcpdump -i eth0 -n -nn -c 2tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes06:14:09.335167 IP 192.168.122.132.22 > 192.168.122.1.53800: Flags [P.], seq 3166421438:3166421626, ack 545579750, win 295, options [nop,nop,TS val 17230918 ecr 2091022108], length 18806:14:09.335332 IP 192.168.122.1.53800 > 192.168.122.132.22: Flags [.], ack 188, win 1424, options [nop,nop,TS val 2091022134 ecr 17230918], length 02 packets captured2 packets received by filter0 packets dropped by kernel从指定的接口进入: ...

August 18, 2021 · 4 min · jiezi

关于linux:Linux命令iptables

作用:用于 IP 包的过滤和实现 NAT. 表和链 罕用的表有2个:filter 和 nat. 每张表又蕴含多条链,每条链就是规定序列. filter 表蕴含 INPUT,FORWARD,OUTPUT 链.nat 表蕴含 PREROUTING,OUTPUT,POSTROUTING 链.接管到数据包的处理过程 本机收到数据包,由 nat.PREROUTING 先进行解决;如果数据包的目标地址是本机,则交由 filter.INPUT 进一步解决;而后将数据包交给本机下层协定栈.如果数据包的目标地址不是本机,则交由 filter.FORWARD 进一步解决;而后交由 nat.POSTROUTING 进行解决.发送数据包的处理过程 数据包先后通过 nat.OUTPUT 和 filter.OUTPUT 进行解决;而后交由 nat.POSTROUTING 进行解决.罕用选项 -t: 指定要解决哪张表,默认是 filter.-n: 以数字模式显示地址和端口号.1. 列举规定 [root@controller ~]# iptables -t nat -L POSTROUTING -n --line-numberChain POSTROUTING (policy ACCEPT)num target prot opt source destination1 RETURN all -- 192.168.122.0/24 224.0.0.0/242 RETURN all -- 192.168.122.0/24 255.255.255.2553 MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-655354 MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-655355 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/246 POSTROUTING_direct all -- 0.0.0.0/0 0.0.0.0/07 POSTROUTING_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/08 POSTROUTING_ZONES all -- 0.0.0.0/0 0.0.0.0/0-L: 列出指定链蕴含的规定.--line-number: 显示每条规定在链中的地位(行号). ...

August 18, 2021 · 2 min · jiezi

关于linux:Linux命令netstat

作用:次要用于显示网络连接信息. 套接字选项:-t: tcp 套接字.-u: udp 套接字.-w: raw 套接字.-x: unix 套接字. 状态选项:-l: 只显示处于侦听状态的套接字.-a: 显示所有套接字. 其余选项:-n: 以数字模式显示地址.-p: 显示套接字所属过程的PID和名称.-e: 显示附加信息,能够获取套接字所属用户信息. 例子 [root@localhost ~]# netstat -tanpActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 11832/sshdtcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1366/mastertcp 0 0 192.168.122.132:22 192.168.122.1:52588 ESTABLISHED 11837/sshd: root@pttcp6 0 0 :::22 :::* LISTEN 11832/sshdtcp6 0 0 ::1:25 :::* LISTEN 1366/masterProto: 套接字所应用的协定.Recv-Q: 连贯此套接字的用户程序未拷贝的字节数.Send-Q: 近程主机未确认的字节数.Local Address: 套接字的本地地址(本地主机名)和端口号.Foreign Address: 对端套接字地址(近程主机名)和端口号.State: 套接字的状态. 取值如下: ...

August 18, 2021 · 1 min · jiezi

关于linux:如何搭建个人博客站点

原文地址:https://www.hz-bin.cn/BuildBlog 1、如何应用 github page 部署集体博客登录 github,点击右上角新建仓库,仓库名填 username.github.io,其中 username 填本人的 github 名称,例如博主的是 hz-bin,则仓库名为 hz-bin.github.io。 进入我的项目的 Settings->Pages 页面,Source 抉择 master,而后点击 Save,则实现部署,即可通过 https://hz-bin.github.io 进行拜访了。 2、如何应用 jekyll 和 TeXt 主题编辑博客内容本地部署 jekyll 环境参考 jekyll 中文文档本地克隆 TeXt 主题,而后进入到 jekyll-TeXt-theme 目录,如果有 Gemfile.lock 文件,先删除该文件。而后在命令行中先执行 gem install bundler jekyll 命令,再执行 bundle exec jekyll serve,则本地博客搭建实现浏览器中输出 http://localhost:4000/ 即可拜访博客内容。如何新增一篇博客:在 _posts 目录中新建 markdown 格式文件,文件名格局为 yyyy-mm-dd-blogname.md。jekyll 会主动进行构建。3、如何配置 gitalk 作为博客的评论零碎首先须要新建一个 OAuth application(右上角头像 -> Settings -> Developer settings -> OAuth Apps -> New OAuth App),如下图所示: ...

August 18, 2021 · 1 min · jiezi

关于linux:Linux之ab命令

ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab十分实用,它不仅能够对apache服务器进行网站拜访压力测试,也能够对或其它类型的服务器进行压力测试。比方nginx、tomcat、IIS等。 ab的原理:ab命令会创立多个并发拜访线程,模仿多个访问者同时对某一URL地址进行拜访。它的测试指标是基于URL的,因而,它既能够用来测试apache的负载压力,也能够测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。 ab命令对收回负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给指标服务器造成微小的负载,其原理相似CC攻打。本人测试应用也须要留神,否则一次上太多的负载。可能造成指标服务器资源耗完,重大时甚至导致死机。 装置ab命令> yum -y install httpd-tools命令格局ab [options] [http[s]://]hostname[:port]/path 命令参数options-A auth-username:password 对服务器提供BASIC认证信赖。 用户名和明码由一个:隔开,并以base64编码模式发送。 无论服务器是否须要(即, 是否发送了401认证需要代码),此字符串都会被发送。-c concurrency 一次产生的申请个数。默认是一次一个。-C cookie-name=value 对申请附加一个Cookie:行。 其典型模式是name=value的一个参数对。 此参数能够反复。-d 显示"percentage served within XX [ms] table"的音讯(为以前的版本提供反对)。-e csv-file 产生一个以逗号分隔的(CSV)文件, 其中蕴含了解决每个相应百分比的申请所须要(从1%到100%)的相应百分比的(以奥妙为单位)工夫。 因为这种格局曾经“二进制化”,所以比'gnuplot'格局更有用。-g gnuplot-file 把所有测试后果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件能够不便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为题目。-h 显示应用办法。-H custom-header 对申请附加额定的头信息。 此参数的典型模式是一个无效的头信息行,其中蕴含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit").-i 执行HEAD申请,而不是GET。-k 启用HTTP KeepAlive性能,即, 在一个HTTP会话中执行多个申请。 默认时,不启用KeepAlive性能.-n requests 在测试会话中所执行的申请个数。 默认时,仅执行一个申请,但通常其后果不具备代表意义。-p POST-file 蕴含了须要POST的数据的文件.-P proxy-auth-username:password 对一个直达代理提供BASIC认证信赖。 用户名和明码由一个:隔开,并以base64编码模式发送。 无论服务器是否须要(即, 是否发送了401认证需要代码),此字符串都会被发送。-q 如果解决的申请数大于150, ab每解决大概10%或者100个申请时,会在stderr输入一个进度计数。 此-q标记能够克制这些信息。-s 用于编译中(ab -h会显示相干信息)应用了SSL的受爱护的https, 而不是http协定的时候。此性能是实验性的,也是很简陋的。最好不要用。-S 不显示中值和规范背离值, 而且在均值和中值为规范背离值的1到2倍时,也不显示正告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供反对).-t timelimit 测试所进行的最大秒数。其外部隐含值是-n 50000。 它能够使对服务器的测试限度在一个固定的总工夫以内。默认时,没有工夫限度。-T content-type POST数据所应用的Content-type头信息。-v verbosity 设置显示信息的具体水平 - 4或更大值会显示头信息, 3或更大值能够显示响应代码(404, 200等), 2或更大值能够显示正告和其余信息。-V 显示版本号并退出。-w 以HTML表的格局输入后果。默认时,它是红色背景的两列宽度的一张表。-x <table>-attributes 设置<table>属性的字符串。 此属性被填入<table 这里>.-X proxy[:port] 对申请应用代理服务器。-y <tr>-attributes 设置<tr>属性的字符串.-z <td>-attributes 设置<td>属性的字符串.对json.im进行,1000次申请,并发用户10的压力测试> ab -n 1000 -c 10 https://json.im-n 1000示意申请总数为1000-c 10示意并发用户数为10ab压力测试返回报文内容详解Server Software: Apache #服务器软件Server Hostname: json.im #域名Server Port: 80 #申请端口号Document Path: / #文件门路Document Length: 40888 bytes #页面字节数Concurrency Level: 10 #申请的并发数Time taken for tests: 27.300 seconds #总拜访工夫Complete requests: 1000 #申请胜利数量Failed requests: 0 #申请失败数量Write errors: 0Total transferred: 41054242 bytes #申请总数据大小(包含header头信息)HTML transferred: 40888000 bytes #html页面理论总字节数Requests per second: 36.63 [#/sec] (mean) #每秒多少申请,这个是十分重要的参数数值,服务器的吞吐量Time per request: 272.998 [ms] (mean) #用户均匀申请等待时间 Time per request: 27.300 [ms] (mean, across all concurrent requests) # 服务器均匀解决工夫,也就是服务器吞吐量的倒数 Transfer rate: 1468.58 [Kbytes/sec] received #每秒获取的数据长度Connection Times (ms) min mean[+/-sd] median maxConnect: 43 47 2.4 47 53Processing: 189 224 40.7 215 895Waiting: 102 128 38.6 118 794Total: 233 270 41.3 263 945Percentage of the requests served within a certain time (ms) 50% 263 #50%用户申请在263ms内返回 66% 271 #66%用户申请在271ms内返回 75% 279 #75%用户申请在279ms内返回 80% 285 #80%用户申请在285ms内返回 90% 303 #90%用户申请在303ms内返回 95% 320 #95%用户申请在320ms内返回 98% 341 #98%用户申请在341ms内返回 99% 373 #99%用户申请在373ms内返回 100% 945 (longest request)登录问题对于理论场景中常常须要用的登录问题,如果接口须要验证Cookie ,那么应用-C写到Cookie内容> ab -n 100 -C key=value https://json.im或者应用 -H 带 Cookie 自定义多个字段> ab -n 100 -H "Cookie: Key1=Value1; Key2=Value2" http://localhost测试接口Header传入token> ab -n 1000 -c 10 -H 'token:abc' https://json.im原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 17, 2021 · 2 min · jiezi

关于linux:不服跑个分-是噱头还是实力

简介: Linux内核社区经常以跑分软件得分,来评估一个优化补丁的价值。让软件跑高分,就是实力的体现! 一、背景:性能之战“不服跑个分”曾经沦为手机行业的调侃用语,然而实话实说,在操作系统畛域“跑分”的确是最重要的评估形式之一。比方 Linux 内核社区经常以跑分软件得分,来评估一个优化补丁的价值。甚至还有 phoronix 这样专一于 Linux 跑分的媒体。而且明天我还想说一点,让软件跑分高,这是实力的体现,是建设在对内核的深刻理解根底上的。本文的故事就源于一次日常的性能优化剖析。咱们在评估自动化性能调优软件 tuned 的时候,发现它在服务器场景,对 Linux 内核调度器相干的参数做了一些渺小的批改,然而这些批改却很大水平改善了 hackbench 这款跑分软件的性能。是不是很有意思?让咱们一起来一探到底。 本文将从几个方面开展,并重点介绍黑体字局部: 相干常识简介hackbench 工作模式简介hackbench 性能受损之源双参数优化思考与拓展二、相干常识简介2.1 CFS调度器Linux 中大部分(能够粗略认为是实时工作之外的所有)线程/过程,都由一个叫 CFS(齐全偏心调度器)的调度器进行调度,它是 Linux 最外围的组件之一。(在Linux中,线程和过程只有细微差别,下文对立用过程表述) CFS 的外围是红黑树,用于管理系统中过程的运行工夫,作为抉择下一个将要运行的过程的根据。此外,它还反对优先级、组调度(基于咱们熟知的 cgroup 实现)、限流等性能,满足各种高级需要。CFS 的具体介绍。 2.2 hackbenchhackbench 是一个针对 Linux 内核调度器的压力测试工具,它的次要工作是创立指定数量的调度实体对(线程/过程),并让它们通过 sockets/pipe 进行数据传输,最初统计整个运行过程的工夫开销。 2.3 CFS 调度器参数本文重点关注以下两个参数,这两个参数也是影响 hackbench 跑分性能的重要因素。系统管理员能够应用 sysctl 命令来进行设置。 最小粒度工夫:kernel.sched_min_granularity_ns 通过批改 kernel.sched_min_granularity_ns,能够影响 CFS 调度周期(sched period)的工夫长短。例如:设置kernel.sched_min_granularity_ns = m,当零碎中存在大量可运行过程时,m 越大,CFS 调度周期就越长。 如图 1 所示,每个过程都可能在 CPU 上运行且工夫各有长短,sched_min_granularity_ns 保障了每个过程的最小运行工夫(优先级雷同的状况下),sched_min_granularity_ns 越大每个过程单次可运行的工夫就越长。 图 1:sched_min_granularity_ns 示意图 唤醒抢占粒度:kernel.sched_wakeup_granularity_ns kernel.sched_wakeup_granularity_ns 保障了从新唤醒的过程不会频繁抢占正在运行的过程,kernel.sched_wakeup_granularity_ns 越大,唤醒过程进行抢占的频率就越小。 如图 2 所示,有 process-{1,2,3} 三个过程被唤醒,因为 process-3 的运行工夫大于 curr(正在 CPU 上运行的过程)无奈抢占运行,而 process-2 运行工夫小于 curr 但其差值小于 sched_wakeup_granularity_ns 也无奈抢占运行,只有 process-1 可能抢占 curr 运行,因而 sched_wakeup_granularity_ns 越小,过程被唤醒后的响应工夫就越快(期待运行工夫越短)。 ...

August 17, 2021 · 2 min · jiezi

关于linux:Linux之wget命令

Linux零碎中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,咱们常常要下载一些软件或从近程服务器复原备份到本地服务器。wget反对HTTP,HTTPS和FTP协定,能够应用HTTP代理。wget 能够跟踪HTML页面上的链接顺次下载来创立近程服务器的本地版本,齐全重建原始站点的目录构造。这又常被称作”递归下载”。在递归下载的时候,wget 遵循Robot Exclusion规范(/robots.txt). wget能够在下载的同时,将链接转换成指向本地文件,以不便离线浏览。wget 十分稳固,它在带宽很窄的状况下和不稳固网络中有很强的适应性.如果是因为网络的起因下载失败,wget会一直的尝试,直到整个文件下载结束。如果是服务器打断下载过程,它会再次联到服务器上从进行的中央持续下载。这对从那些限定了链接工夫的服务器上下载大文件十分有用。装置形式有些最小装置的Linux零碎可能没有装置上wget命令,能够自行装置CentOS> yum install wget -yDebian/Ubuntusudo apt-get install -y wget命令格局wget [参数][URL] 命令参数启动参数-V, –version 显示wget的版本后退出-h, –help 打印语法帮忙-b, –background 启动后转入后盾执行-e, –execute=COMMAND 执行’.wgetrc’格局的命令,wgetrc格局参见/etc/wgetrc或~/.wgetrc记录和输出文件参数-o, –output-file=FILE 把记录写到FILE文件中-a, –append-output=FILE 把记录追加到FILE文件中-d, –debug 打印调试输入-q, –quiet 宁静模式(没有输入)-v, –verbose 简短模式(这是缺省设置)-nv, –non-verbose 关掉简短模式,但不是宁静模式-i, –input-file=FILE 下载在FILE文件中呈现的URLs-F, –force-html 把输出文件当作HTML格式文件看待-B, –base=URL 将URL作为在-F -i参数指定的文件中呈现的绝对链接的前缀–sslcertfile=FILE 可选客户端证书 –sslcertkey=KEYFILE 可选客户端证书的KEYFILE –egd-file=FILE 指定EGD socket的文件名下载参数-bind-address=ADDRESS 指定本地应用地址(主机名或IP,当本地有多个IP或名字时应用)-t, –tries=NUMBER 设定最大尝试链接次数(0 示意无限度).-O –output-document=FILE 把文档写到FILE文件中-nc, –no-clobber 不要笼罩存在的文件或应用.#前缀-c, –continue 接着下载没下载完的文件-progress=TYPE 设定过程条标记-N, –timestamping 不要从新下载文件除非比本地文件新-S, –server-response 打印服务器的回应-T, –timeout=SECONDS 设定响应超时的秒数-w, –wait=SECONDS 两次尝试之间距离SECONDS秒-waitretry=SECONDS 在从新链接之间期待1…SECONDS秒-random-wait 在下载之间期待0…2*WAIT秒-Y, -proxy=on/off 关上或敞开代理-Q, -quota=NUMBER 设置下载的容量限度-limit-rate=RATE 限定下载速率目录参数-nd –no-directories 不创立目录-x, –force-directories 强制创立目录-nH, –no-host-directories 不创立主机目录-P, –directory-prefix=PREFIX 将文件保留到目录 PREFIX/…-cut-dirs=NUMBER 疏忽 NUMBER层近程目录HTTP 选项参数-http-user=USER 设定HTTP用户名为 USER.-http-passwd=PASS 设定http明码为 PASS-C, –cache=on/off 容许/不容许服务器端的数据缓存 (个别状况下容许)-E, –html-extension 将所有text/html文档以.html扩展名保留-ignore-length 疏忽 ‘Content-Length’头域-header=STRING 在headers中插入字符串 STRING-proxy-user=USER 设定代理的用户名为 USERproxy-passwd=PASS 设定代理的明码为 PASSreferer=URL 在HTTP申请中蕴含 ‘Referer: URL’头-s, –save-headers 保留HTTP头到文件-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSIONno-http-keep-alive 敞开 HTTP流动链接 (永远链接)cookies=off 不应用 cookiesload-cookies=FILE 在开始会话前从文件 FILE中加载cookiesave-cookies=FILE 在会话完结后将 cookies保留到 FILE文件中FTP 选项参数-nr, –dont-remove-listing 不移走 ‘.listing’文件-g, –glob=on/off 关上或敞开文件名的 globbing机制passive-ftp 应用被动传输模式 (缺省值).active-ftp 应用被动传输模式retr-symlinks 在递归的时候,将链接指向文件(而不是目录)递归下载参数-r, –recursive 递归下载--慎用!-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)-delete-after 在下载结束后部分删除文件-k, –convert-links 转换非绝对链接为绝对链接-K, –backup-converted 在转换文件X之前,将之备份为 X.orig-m, –mirror 等价于 -r -N -l inf -nr-p, –page-requisites 下载显示HTML文件的所有图片递归下载中的蕴含和不蕴含(accept/reject):-A, –accept=LIST 分号分隔的被承受扩展名的列表-R, –reject=LIST 分号分隔的不被承受的扩展名的列表-D, –domains=LIST 分号分隔的被承受域的列表-exclude-domains=LIST 分号分隔的不被承受的域的列表-follow-ftp 跟踪HTML文档中的FTP链接-follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表-G, –ignore-tags=LIST 分号分隔的被疏忽的HTML标签的列表-H, –span-hosts 当递归时转到内部主机-L, –relative 仅仅跟踪绝对链接-I, –include-directories=LIST 容许目录的列表-X, –exclude-directories=LIST 不被蕴含目录的列表-np, –no-parent 不要追溯到父目录应用wget下载单个文件> wget http://nginx.org/download/nginx-1.16.1.tar.gz ...

August 16, 2021 · 2 min · jiezi

关于linux:YUM下载全量依赖

    在离线的内网环境下进行装置一些软件的时候会呈现依赖不残缺的状况,个别状况下会应用如下形式进行下载依赖包 查看依赖包能够应用 yum deplist 进行查找 [root@localhost ~]# yum deplist nginxLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * epel: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.tuna.tsinghua.edu.cnpackage: nginx.x86_64 1:1.20.1-2.el7 dependency: /bin/sh provider: bash.x86_64 4.2.46-34.el7 dependency: libc.so.6(GLIBC_2.17)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypt.so.1()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypto.so.1.1()(64bit) provider: openssl11-libs.x86_64 1:1.1.1g-3.el7 dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) provider: openssl11-libs.x86_64 1:1.1.1g-3.el7 dependency: libdl.so.2()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libdl.so.2(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpcre.so.1()(64bit) provider: pcre.x86_64 8.32-17.el7 dependency: libprofiler.so.0()(64bit) provider: gperftools-libs.x86_64 2.6.1-1.el7 dependency: libpthread.so.0()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpthread.so.0(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpthread.so.0(GLIBC_2.3.2)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libssl.so.1.1()(64bit) provider: openssl11-libs.x86_64 1:1.1.1g-3.el7 dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) provider: openssl11-libs.x86_64 1:1.1.1g-3.el7 dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) provider: openssl11-libs.x86_64 1:1.1.1g-3.el7 dependency: libz.so.1()(64bit) provider: zlib.x86_64 1.2.7-19.el7_9 dependency: nginx-filesystem provider: nginx-filesystem.noarch 1:1.20.1-2.el7 dependency: nginx-filesystem = 1:1.20.1-2.el7 provider: nginx-filesystem.noarch 1:1.20.1-2.el7 dependency: openssl provider: openssl.x86_64 1:1.0.2k-21.el7_9 dependency: pcre provider: pcre.x86_64 8.32-17.el7 provider: pcre.i686 8.32-17.el7 dependency: redhat-indexhtml provider: centos-indexhtml.noarch 7-9.el7.centos dependency: rtld(GNU_HASH) provider: glibc.x86_64 2.17-324.el7_9 provider: glibc.i686 2.17-324.el7_9 dependency: system-logos provider: centos-logos.noarch 70.0.6-3.el7.centos dependency: systemd provider: systemd.x86_64 219-78.el7_9.3[root@localhost ~]#应用 repotrack 命令进行下载所需依赖 ...

August 16, 2021 · 13 min · jiezi

关于linux:Linux云计算使用-MyCat-实现-MySQL-主从读写分离

MySQL 读写拆散的概述MySQL 作为目前世界上应用最宽泛的收费数据库,置信所有从事零碎运维的工程师都肯定接触过。但在理论的生产环境中,由单台 MySQL 作为独立的数据库是齐全不能满足理论需要的,无论是在安全性,高可用性以及高并发等各个方面。 因而,一般来说都是通过主从复制(Master-Slave)的形式来同步数据,再通过读写拆散(MySQL-Proxy/Amoeba)来晋升数据库的并发负载能力,这样的计划来进行部署与施行的。 读写拆散工作原理根本的原理是让主数据库解决事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库解决 SELECT 查问操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。数据外部替换过程: 为什么要读写拆散面对越来越大的拜访压力,单台的服务器的性能成为瓶颈,须要分担负载主从只负责各自的写和读,极大水平的缓解 X(写)锁和 S(读)锁争用从库可配置 myisam 引擎,晋升查问性能以及节约零碎开销减少冗余,进步可用性实现读写拆散的形式个别有两种形式实现 应用程序层实现,网站的程序实现应用程序层实现指的是在应用程序外部及连接器中实现读写拆散长处:应用程序外部实现读写拆散,装置既能够应用;缩小肯定部署难度;拜访压力在肯定级别以下,性能很好。毛病:架构一旦调整,代码要跟着变;难以实现高级利用,如主动分库,分表;无奈实用大型利用场景。中间件层实现:中间件层实现是指在内部中间件程序实现读写拆散 常见的中间件程序 Cobar:阿里巴巴 B2B 开发的关系型分布式系统,治理将近 3000 个 MySQL 实例。 在阿里禁受住了考验,前面因为作者的走开的起因 cobar 没有人保护 了,阿里也开发了 tddl 代替 cobar。MyCAT:社区爱好者在阿里 cobar 根底上进行二次开发,解决了 cobar 过后存在的一些问题,并且退出了许多新的性能在其中。目前 MyCAT 社区活跃度很高,曾经有一些公司在应用 MyCAT。总体来说反对度比较高,也会始终保护上来。OneProxy:数据库界大牛,前支付宝数据库团队领导楼总开发,基于 mysql 官网 的 proxy 思维利用 c 进行开发的,OneProxy 是一款商业免费的中间件,楼总舍去了一些性能点,专一在性能和稳定性上。有人测试过说在高并发下很稳固。Vitess:这个中间件是 Youtube 生产在应用的,然而架构很简单。 与以往中间件不同,应用 Vitess 利用改变比拟大,要应用他提供语言的 API 接口,咱们能够借鉴他其中的一些设计思维。Kingshard:Kingshard 是前 360Atlas 中间件开发团队的陈菲利用业余时间 用 go 语言开发的,目前参加开发的人员有 3 个左右, 目前来看还不是成熟能够应用的产品,须要在不断完善。Atlas:团队基于 mysql proxy 把 lua 用 C 改写。原有版本是反对分表, 目前曾经放出了分库分表版本。在网上看到一些敌人常常说在高并发下会常常挂掉,如果大家要应用须要提前做好测试。MaxScale 与 MySQL Route:这两个中间件都算是官网的,MaxScale 是 mariadb (MySQL 原作者保护的一个版本)研发的,目前版本不反对分库分表。MySQL Route 是当初 MySQL 官网 Oracle 公司公布进去的一个中间件。长处:架构设计更灵便能够在程序上实现一些高级管制,如:透明化程度拆分,failover,监控能够依附技术手段进步 mysql 性能对业务代码的影响小,同时也平安 ...

August 16, 2021 · 5 min · jiezi

关于linux:Linux指令入门文件管理

体验简介场景将提供一台配置了Aliyun Linux 2操作系统的ECS实例(云服务器)。通过本教程的操作,您能够学习Linux零碎中罕用的文件治理命令。 阿里云处体验开明资源 在试验主页面,页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。单击屏幕右侧 创立资源 ,收费创立以后实验所需云产品资源。阐明: 资源创立过程须要1~3分钟。实现试验资源的创立后,您能够在 云产品资源 列表查看已创立的资源信息,例如:IP地址、子用户名称和子用户明码等。 磁盘治理命令cat命令。cat命令形容:该命令用于连贯文件并打印到规范输出设备上。 cat命令语法: cat [参数] [文件名]参数阐明:-n 由1开始对所有输入的行数进行编号。 -b 由1开始对所有输入的行数进行编号,对于空白行不编号。 -s 当遇到有间断两行以上的空白行,就替换为一行的空白行。 -E 在每行完结处显示$。 -T 将 TAB 字符显示为^I。 cat命令应用示例: a. 执行如下命令,将一个自增序列写入test1.txt文件中。 for i in $(seq 1 10); do echo $i >> test1.txt ; doneb. 执行如下命令,查看文件test1.txt内容。 cat test1.txt返回后果如下所示。 c. 执行如下命令,将test1.txt的文件内容加上行号后输出到test2.txt文件。 cat -n test1.txt > test2.txt d. 执行如下命令,查看文件test2.txt内容。 cat test2.txt返回后果如下所示。 e. 执行如下命令,将test1.txt文件内容清空。 cat /dev/null > test1.txt f. 执行如下命令,查看文件test1.txt内容。 cat test1.txt返回后果如下所示,您能够看到test1.txt文件没有任何内容。 ...

August 16, 2021 · 1 min · jiezi

关于linux:Linux之scp命令

Linux零碎中的scp(secure copy)命令用于以平安形式在服务器之间复制文件。通过应用SCP命令或平安正本,能够在本地主机和近程主机之间或两个近程主机之间平安地传输文件。它应用与平安外壳(SSH)协定中雷同的身份验证和安全性。SCP以其简略性,安全性和预装置的可用性而闻名。命令格局scp [参数] [原门路] [指标门路] 命令参数-1 强制scp命令应用协定ssh1-2 强制scp命令应用协定ssh2-4 强制scp命令只应用IPv4寻址-6 强制scp命令只应用IPv6寻址-B 应用批处理模式(传输过程中不询问传输口令或短语)-C 容许压缩。(将-C标记传递给ssh,从而关上压缩性能)-p 留原文件的批改工夫,拜访工夫和拜访权限。-q 不显示传输进度条。-r 递归复制整个目录。-v 具体形式显示输入。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连贯,验证和配置问题。-c cipher 以cipher将数据传输进行加密,这个选项将间接传递给ssh。-F ssh_config 指定一个代替的ssh配置文件,此参数间接传递给ssh。-i identity_file 从指定文件中读取传输时应用的密钥文件,此参数间接传递给ssh。-l limit 限定用户所能应用的带宽,以Kbit/s为单位。-o ssh_option 如果习惯于应用ssh_config(5)中的参数传递形式,-P port 留神是大写的P, port是指定数据传输用到的端口号-S program 指定加密传输时所应用的程序。此程序必须可能了解ssh(1)的选项。复制当前目录下的rumenz.tar.gz到近程服务器> scp rumenz.tar.gz root@json.im:/tmp/rumenz.tar.gz指定了用户名,命令执行后须要输出用户明码;如果不指定用户名,命令执行后须要输出用户名和明码;复制rumenz目录到近程服务器> scp -r rumenz root@json.im:/tmp复制目录须要加上-r参数从近程服务器下载rumenz.tar.gz文件到本地> scp root@json.im:/tmp/rumenz.tar.gz ./tmp从近程服务器下载rumenz目录> scp -r root@json.im:/tmp/rumenz .自定义端口SCP应用端口22作为默认端口。然而出于平安起因,您能够将端口更改为另一个端口。例如,咱们将应用端口2222。那么命令必须像这样。> scp -P 2222 rumenz.tar.gz root@json.im:/tmp/限度带宽应用-l参数将限度要应用的总带宽。如果您制作了一个自动化脚本来复制许多文件,然而您不心愿SCP过程节约带宽,这将很有用。> scp -l 400 rumenz.tar.gz root@json.im:/tmp/原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 15, 2021 · 1 min · jiezi

关于linux:ubuntu-安装-memcached-并配置远程访问

装置 Memcached应用 apt 包管理器装置 sudo apt install memcached# 凋谢近程拜访 编辑 /etc/memcached.conf 文件 sudo vim /etc/memcached.conf批改该文件中将 # -l 127.0.0.1-l 0.0.0.0

August 15, 2021 · 1 min · jiezi

关于linux:Linux之rcp命令

rcp代表“remote file copy”(近程文件拷贝)。该命令用于在计算机之间拷贝文件。rcp命令有两种格局。第一种格局用于文件到文件的拷贝;第二种格局用于把文件或目录拷贝到另一个目录中。linux零碎中默认是不装置这个命令的,上面是各种零碎的装置形式#Arch Linux> pacman -S inetutils #CentOS> yum install rsh -y #Fedora> dnf install rsh #OS X> brew install inetutilsrcp拷贝文件所需套件rsh (Client)和rsh-server (Server),Client从Server拷贝文件。装置sh-server,默认开启514端口> yum install rsh rsh-server -y> systemctl enable rsh.socket> systemctl start rsh.socket配置sh-server> echo "rsh" >> /etc/securetty> echo "115.34.111.11 root" >> /root/.rhosts115.34.111.11是客户端的ip,意思就是容许115.34.111.11操作sh-server只对某个用户失效如root用户在单方root用户根目录下建设.rhosts文件,并将单方的hostname加进去.在此之前应在单方的 /etc/hosts文件中退出对方的IP和hostname命令格局rcp [参数] [源文件] [指标文件] 命令性能rcp命令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最初的目的地是一个曾经存在的目录,则它会把后面指定的所有文件或目录复制到该目录中。命令参数-p:保留源文件或目录的属性,包含拥有者、所属群组、权限与工夫;-r:递归解决,将指定目录下的文件与子目录一并处理;-x:加密两台Linux主机间传送的所有信息。-D:指定近程服务器的端口号。将当前目录下的rumenz.txt复制到112.112.112.112服务器的/tmp下> rcp rumenz.txt 112.112.112.112:/tmp将目录rumenz复制到112.112.112.112服务器的/tmp下> rcp -r rumenz 112.112.112.112:/tmp从近程服务器下载文件将112.112.112.112服务器tmp目录下的rumenz.tar.gz下载到当前目录> rcp 112.112.112.112:/tmp/rumenz.tar.gz .从近程零碎复制目录> rcp -r 112.112.112.112:/tmp/rumenz .要将近程目录及其所有文件和子目录复制到本地目录,请在以下语法中应用 rcp 和 -r(递归)选项。.代表当前目录。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 14, 2021 · 1 min · jiezi

关于linux:七夕特别的礼物都快2022了你还只会用麒麟软件商店装软件

七夕到了,独身且宅家的你是不是无事可做?上一期奇奇带大家学习了 Windows10+优麒麟双系统装置,这一期咱们来持续学习吧! 如何在优麒麟零碎装置 APP独身还不学习,奇奇和小优都会厌弃你~ 近期奇奇发现有不少用户反馈不晓得怎么装置软件,于是紧锣密鼓地筹备了宝典一份,本文一共介绍四种办法,别离是通过麒麟软件商店、dpkg 命令、apt 命令和源码装置。 软件装置&卸载1、麒麟软件商店装置 最便捷、简略的装置形式莫过于优麒麟零碎自带的麒麟软件商店,在“开始菜单”关上“麒麟软件商店”,即可搜寻想要装置的利用,点击“下载”一键装置。 优麒麟(Ubuntu Kylin) 2、dpkg 装置 dpkg 是为 Debian 专门开发的套件管理系统,不便对 Deb 包进行装置、更新及卸载等操作。次要用于装置曾经下载到本地机器上的 Deb 包,所有源自 Debian 的 Linux 发行版都能够应用 dpkg 命令,例如 Ubuntu、Ubuntu Kylin、Knoppix 等。 dpkg 语法格局:dpkg [选项] [包名或文件名] 选项 性能-l 查问装置的软件包,未指定包则显示所有已装置的软件包-i 装置软件包-L 打印已安装包的文件清单-S 查问某个文件属于哪个软件包-s 查问某软件包的详细信息,包含版本、状态、依赖及提供者等-r 卸载软件包,不革除配置文件-P 卸载软件包,且删除配置文件 示例1:查看是否已装置 vim 包ubuntukylin@ubuntukylin:~$ dpkg -l | grep vim ii vim 2:7.4.1689-3kord2k1 amd64 Vi IMproved - enhanced vi editor ...................两头省略..................... ii vim-tiny 2:7.4.1689-3kord2k1 amd64 Vi IMproved - enhanced vi editor - compact version ...

August 14, 2021 · 2 min · jiezi

关于linux:Linux挂载存储卷

基本概念1、 物理卷—–PV(Physical Volume)物理卷在逻辑卷治理中处于最底层,它能够是理论物理硬盘上的分区,也能够是整个物理硬盘。 2、 卷组——–VG(Volumne Group)卷组建设在物理卷之上,一个卷组中至多要包含一个物理卷,在卷组建设之后可动静增加物理卷到卷组中。一个逻辑卷治理系统工程中能够只有一个卷组,也能够领有多个卷组。 3、 逻辑卷—–LV(Logical Volume)逻辑卷建设在卷组之上,卷组中的未调配空间能够用于建设新的逻辑卷,逻辑卷建设后能够动静地扩大和放大空间。零碎中的多个逻辑卷要以属于同一个卷组,也能够属于不同的多个卷组。 4、 物理区域–PE(Physical Extent)物理区域是物理卷中可用于调配的最小存储单元,物理区域的大小可依据理论状况在建设物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小须要统一。 5、 逻辑区域―LE(Logical Extent)逻辑区域是逻辑卷中可用于调配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。 6、 卷组形容区域—–(Volume Group Descriptor Area)卷组形容区域存在于每个物理卷中,用于形容物理卷自身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的调配等所有信息,卷组形容区域是在应用pvcreate建设物理卷时建设的。 根底命令物理卷命令pvscan #在零碎的所有磁盘中搜寻已存在的物理卷pvdisplay 物理卷全门路名称 #用于显示指定物理卷的属性。pvdata 物理卷全门路名称 #用于显示物理卷的卷组形容区域信息,用于调试目标。pvchange Cx|--allocation {y|n} 物理卷全路径名 #用于扭转物理卷的调配许可设置物理卷的创立与删除命令pvcreate 设施全路径名 #用于在磁盘或磁盘分区上创立物理卷初始化信息,以便对该物理卷进行逻辑卷治理。pvmove 源物理卷全门路我[目标物理卷全路径名] #用于把某物理卷中的数据转移到同卷组中其余的特刊卷中。卷组命令vgscan #检测零碎中所有磁盘vgck [卷组名] #用于查看卷组中卷组形容区域信息的一致性。vgdisplay [卷组名] #显示卷组的属性信息vgrename 原卷组名 新卷组名vgchange -a y|n [卷组名] #扭转卷组的相应属性。是否可调配vgchange -l 最大逻辑卷数 #卷组可包容最大逻辑卷数vgchange -x y|n [卷组名] #卷是否无效vgmknodes [卷组名|卷组门路] #用于建设(从新建设)已有卷组目录和其中的设施文件卷组配置的备份与复原命令vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件vgcfgrestore -n 卷组名 物理卷全路命名 #从备份文件中必得指定物理卷的信息卷组的建设与删除命令vgcreate 卷组名 物理卷全路径名[物理卷全路径名]vgmove 卷组名卷组的裁减与放大命令vgextend 卷组名 物理卷全路径名[物理卷全路径名]vgreduce 卷组名 物理卷全路径名[物理卷全路径名]卷组的合并与拆分vgsplit 现有卷组 新卷组 物理卷全路径名[物理卷全路径名]卷组的输出与输入命令vgexport 卷组名vgimport 卷组名 卷组中的物理卷[卷组中的物理卷]逻辑卷命令lvscanlvdisplay 逻辑卷全路径名[逻辑卷全路径名]lvrename 旧逻辑卷全路径名 新逻辑卷全路径名lvrename 卷组名 旧逻辑卷名 新逻辑卷名lvchangee2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名逻辑卷的创立与删除命令lvcreatelvremove逻辑卷的裁减与放大命令lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名逻辑卷治理命令lvmdiskscan #检测所有的SCSI、IDE等存储设备lvmchange -R|--reset #复位逻辑卷管理器lvmsadc [日志文件全路径名] #收信逻辑卷管理器读写统计信息,保留到日志文件中。lvmsar 日志文件全路径名 #从lvmsadc命令生成的日志文件中读取并报告逻辑卷管理器的读写统计信息。挂载计划计划一间接挂载。然而是用逻辑卷的名称挂载。硬盘上的数据还在。# 查看物理卷 pvscanpvs# 查看卷组 vgdisplayvgs# vgcreate vg名字 须要退出这个vg的pv分区# vgextend vg名称 pv分区# 激活逻辑卷vgchange -ay /dev/VolGroup00# vgdisplay# 创立分区lvcreate -L 分区大小+单位 -n lv分区名称 vg名称# 删除分区lvremove 分区地位(/dev/disk_lvm/name)# 查看服务器物理分区,逻辑卷的信息fdisk -l# 查看逻辑卷的具体信息lvdisplay# 挂载mount /dev/VolGroup/lv_home /store计划二格式化再挂载。硬盘上的数据革除了。# 间接格式化分区mkfs -t ext4 -c /dev/sda3# 挂载硬盘mount /dev/sda3 /store

August 14, 2021 · 1 min · jiezi

关于linux:Linux之telnet命令

telnet命令通常用来近程登录,默认端口是23。telnet程序是基于TELNET协定的近程登录客户端程序。Telnet协定是TCP/IP协定族中的一员,是Internet远程登陆服务的标准协议和次要形式。它为用户提供了在本地计算机上实现近程主机工作的 能力。在终端使用者的电脑上应用telnet程序,用它连贯到服务器。终端使用者能够在telnet程序中输出命令,这些命令会在服务器上运行,就像间接在服务器的管制台上输出一样。能够在本地就能管制服务器。要开始一个 telnet会话,必须输出用户名和明码来登录服务器。Telnet是罕用的近程管制Web服务器的办法。 telnet因为采纳明文传送报文,安全性不好,很多Linux服务器都不凋谢telnet服务,而改用更平安的ssh形式了。但依然有很多别的零碎可能采纳了telnet形式来提供近程登录,因而弄清楚telnet客户端的应用形式仍是很有必要的。 telnet命令还可做别的用处,比方确定近程服务的状态,比方确定近程服务器的某个端口是否能拜访。 telnet命令默认不装置,上面是Centos7的装置形式 查看是否装置 > rpm -qa|grep telnet*> rpm -qa|grep xinetd如果没有装置就间接装置> yum -y install telnet*> yum -y install xinetd设置开机启动并启动该服务//设置开机启动> systemctl enable xinetd.service> systemctl enable telnet.socket//启动该服务> systemctl start telnet.socket> systemctl start xinetd> firewall-cmd --permanent --add-port=23/tcp> firewall-cmd --reload测试> telnet 127.0.0.1Ubuntu装置办法> sudo apt-get install openbsd-inetd> sudo apt-get install telnetd> sudo /etc/init.d/openbsd-inetd restartTelnet 客户端命常用命令open : 应用 openhostname 能够建设到主机的 Telnet 连贯。close : 应用命令 close 命令能够敞开现有的 Telnet 连贯。display : 应用 display 命令能够查看 Telnet 客户端的以后设置。send : 应用 send 命令能够向 Telnet 服务器发送命令。反对以下命令:ao : 放弃输入命令。ayt : “Are you there”命令。esc : 发送以后的转义字符。ip : 中断过程命令。synch : 执行 Telnet 同步操作。brk : 发送信号。quit :应用 quit 命令能够退出 Telnet 客户端。上表所列命令以外的其余命令都将以字符串的模式发送至 Telnet 服务器。例如,send json 将发送字符串json至Telnet 服务器,这样,Telnet 会话窗口中将呈现该字符串。命令格局telnet [参数] [主机] ...

August 13, 2021 · 1 min · jiezi

关于linux:Linux之ss命令

ss是Socket Statistics的缩写。顾名思义,ss命令能够用来获取socket统计信息,它能够显示和netstat相似的内容。但ss的劣势在于它可能显示更多更具体的无关TCP和连贯状态的信息,而且比netstat更疾速更高效。 当服务器的socket连贯数量变得十分大时,无论是应用netstat命令还是间接cat /proc/net/tcp,执行速度都会很慢。 ss快的秘诀在于,它利用到了TCP协定栈中tcp_diag。tcp_diag是一个用于剖析统计的模块,能够取得Linux内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的零碎中没有tcp_diag,ss也能够失常运行,只是效率会变得稍慢。(但依然比netstat要快。) ss命令用于显示socket状态. 他能够显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其余工具展现等多tcp和state信息. 它是一个十分实用、疾速、无效的跟踪IP连贯和sockets的新工具.SS命令能够提供如下信息命令格局ss [参数]ss [参数] [过滤命令性能比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,容许你查问 socket 的无关统计信息命令参数-h, --help 帮忙信息-V, --version 程序版本信息-n, --numeric 不解析服务名称-r, --resolve 解析主机名-a, --all 显示所有套接字(sockets)-l, --listening 显示监听状态的套接字(sockets)-o, --options 显示计时器信息-e, --extended 显示具体的套接字(sockets)信息-m, --memory 显示套接字(socket)的内存应用状况-p, --processes 显示应用套接字(socket)的过程-i, --info 显示 TCP外部信息-s, --summary 显示套接字(socket)应用详情-4, --ipv4 仅显示IPv4的套接字(sockets)-6, --ipv6 仅显示IPv6的套接字(sockets)-0, --packet 显示 PACKET 套接字(socket)-t, --tcp 仅显示 TCP套接字(sockets)-u, --udp 仅显示 UCP套接字(sockets)-d, --dccp 仅显示 DCCP套接字(sockets)-w, --raw 仅显示 RAW套接字(sockets)-x, --unix 仅显示 Unix套接字(sockets)-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,反对 unix, inet, inet6, link, netlink-A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件-F, --filter=FILE 从文件中读取过滤器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]显示TCP连贯> ss -a -t ...

August 12, 2021 · 2 min · jiezi

关于linux:文件权限

权限介绍对文件的权限r -- 可应用文件查看类工具获取其内容w -- 可批改其内容x -- 可执行(运行)此文件(此文件必须是可执行的)对目录的权限r -- 可应用ls查看此目录中文件列表w -- 可在此目录中创立,删除文件,而和删除的文件的权限无关x -- 能够**cd进入**目录,可ls -l **查看**此目录中文件的**元数据**(需配合r权限),属于目录的可拜访的最小权限X -- 只给目录x权限,不给无执行权限的文件x权限批改文件权限chmod Usage: chmod [OPTION]... MODE[,MODE]... FILE... or: chmod [OPTION]... OCTAL-MODE FILE... or: chmod [OPTION]... --reference=RFILE FILE...MODE: who opt permission who: u g o aopt: + - =permission: r, w, xOCTAL-MODE r -- 4w -- 2x -- 1

August 11, 2021 · 1 min · jiezi

关于linux:Linux上面如何使用find命令

find:语法:find 【门路】【参数】【表达式】 阐明:从指定门路下递归向下搜寻文件,在不指定查找目录的状况下是对整个零碎遍历查找。 反对依照各种条件形式搜寻,功能强大。 反对对搜素失去的文件进一步用命令操作。 罕用参数如下: 依据文件属性查找 -user:依据文件拥有者寻找文件 -group:依据文件所属组寻找文件 -name:依据文件名寻找文件;-iname:不辨别大小写 -uid:依据uid查找文件 -gid:依据gid查找文件 eg: find /tmp -gid 1000 查找gid是1000的文件 -perm:依据文件权限寻找文件 +:满足其中的一位就可匹配 -:只指定权限为1的位,其余位不作要求. eg: find / -perm 755 查找根目录下权限是755的文件 find / -perm +222 示意只有有一类用户(属主,属组,其余)匹配写权限就行. find / -perm +6 只有 其余 中的读或写权限为1. eg:--- --- 100、--- --- 010、--- ---110. find / -perm -222 示意必须所有类别用户都满足有写权限,第二位必须为1. -size:依据文件大小寻找文件 eg: find /tmp -size 2M 查找在/tmp目录下等于2M的文件 find /tmp -size +2M 查找在/tmp目录下大于2M的文件 find /tmp -size -2M 查找在/tmp目录下小于2M的文件 -type x:依据文件类型寻找文件 。 ...

August 11, 2021 · 1 min · jiezi

关于linux:ICMP-知识大全

什么是icmp协定ICMP是(Internet Control Message Protocol)Internet管制报文协定。它是TCP/IP协定族的一个子协定,用于在IP主机、路由器之间传递管制音讯。管制音讯是指网络通不通、主机是否可达、路由是否可用等网络自身的音讯。这些管制音讯尽管并不传输用户数据,然而对于用户数据的传递起着重要的作用。 定义ICMP协定是一种面向无连贯的协定,用于传输出错报告管制信息。它是一个十分重要的协定,它对于网络安全具备极其重要的意义。 它是TCP/IP协定族的一个子协定,属于网络层协定,次要用于在主机与路由器之间传递管制信息,包含报告谬误、替换受限管制和状态信息等。当遇到IP数据无法访问指标、IP路由器无奈按以后的传输速率转发数据包等状况时,会主动发送ICMP音讯。ICMP报文在IP帧构造的首部协定类型字段(Protocol 8bit)的值=1. 如下图所示,ICMP包有一个8字节长的包头,其中前4个字节是固定的格局,蕴含8位类型字段,8位代码字段和16位的校验和;后4个字节依据ICMP包的类型而取不同的值。 Understanding Ping Command and ICMP with ExamplesWhat is ICMP type?Understanding ICMP Packets with Examples ICMP提供统一易懂的出错报告信息。发送的出错报文返回到发送原数据的设施,因为只有发送设施才是出错报文的逻辑接受者。发送设施随后可依据ICMP报文确定产生谬误的类型,并确定如何能力更好地重发失败的数据包。然而ICMP惟一的性能是报告问题而不是纠正错误,纠正错误的工作由发送方实现。 咱们在网络中常常会应用到ICMP协定,比方咱们常常应用的用于查看网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协定工作的过程。还有其余的网络命令如跟踪路由的Tracert命令也是基于ICMP协定的。 13fb8ad9562cfcfaa95f15a5fa34bd4d.png ICMP协定到底属于哪一层icmp协定是IP层的从属协定,是介于IP层和TCP层之间的协定,个别认为属于IP层协定。IP协定用它来与其余主机或路由器替换谬误报文和其余的一些网络状况。在ICMP包重携带了管制信息和故障复原信息。次要用于路由器主机向其余路由器或者主机发送出错报文的管制信息。 ICMP的性能特点 e33e4657fe4bd28f3aa407685d5be9a4.png ICMP自身是网络层的一个协定; ICMP过错报告采纳路由器-源主机的模式,路由器在发现数据报传输呈现谬误时只向源主机报告过错起因; ICMP并不能保障所有的IP数据报都可能传输到目标主机; ICMP不能纠正过错,它只是报告过错。过错解决须要由高层协定去实现。 它是TCP/IP协定族的一个子协定,用于在IP主机、路由器之间传递管制音讯。管制音讯是指网络通不 通、主机是否可达、路由是否可用等网络自身的音讯。这些管制音讯尽管并不传输用户数据,然而对于用户数据的传递起着重要的作用。 ICMP的作用与特点 ICMP的特点: ICMP自身是网络层的一个协定; ICMP过错报告采纳路由器-源主机的模式,路由器在发现数据报传输呈现谬误时只向源主机报告过错起因; ICMP并不能保障所有的IP数据报都可能传输到目标主机; ICMP不能纠正过错,它只是报告过错。过错解决须要由高层协定去实现。 ICMP报文类型 ICMP差错控制 ICMP过错报告报文: 目标站不可达: 源站克制 超时 参数问题 扭转路由 目标站不可达到 网络不可达到(net unreachable) 主机不可达到(host unreachable) 协定不可达到(protocol unreachable) 端口不可达到(port unreachable) 源路由抉择不能实现(source route failed) 目标网络不可知(unknown destination network) 目标主机不可知(unknown destination host) Exploring ICMP Protocol with ExamplesExploring ICMP with Examples ...

August 11, 2021 · 1 min · jiezi

关于linux:移动云正式发布基于龙蜥-Anolis-OS-的-BCLinux-V82-通用版操作系统

简介: 2020年12月CentOS项目组发表CentOS 8将于2021年12月31日完结反对,这意味着从2022年开始,应用CentOS 8的用户,将无奈失去来自官网的新硬件反对、bug修复和安全补丁。针对这一状况,挪动云大云操作系统团队基于国内开源社区深度定制,推出了企业定制版操作系统BC-Linux V8.2版本。注:继统信基于龙蜥社区Anolis OS 8发行其Linux操作系统商业版——统信服务器操作系统V20后,龙蜥社区理事成员单位挪动云也公布了基于龙蜥 Anolis OS 的BC-Linux V8.2 通用版操作系统。本文来自挪动云,欢送更多合作伙伴退出龙蜥社区。 概述2020年12月CentOS项目组发表CentOS 8将于2021年12月31日完结反对,这意味着从2022年开始,应用CentOS 8的用户,将无奈失去来自官网的新硬件反对、bug修复和安全补丁。针对这一状况,挪动云大云操作系统团队基于国内开源社区深度定制,推出了企业定制版操作系统BC-Linux V8.2版本。 本次公布的BC-Linux V8.2是基于龙蜥社区Anolis OS 8.2版本深度定制的X86服务器通用版操作系统,与RHEL 8、CentOS 8软硬件生态100%兼容。BC-Linux V8.2版本搭载了双内核,别离为规范内核4.19和BEK(BigCloud Enterprise Kernel)内核5.10,反对TCP层跟踪性能、离线调度算法、KATA平安容器、OS迁徙工具、自动化部署工具等,在零碎的性能、稳定性和安全性方面都做了深度优化和个性加强,具备高可用、高平安、高稳固等商业发行版本特点,为用户提供高效、业余的技术支持和服务。 特色性能介绍 双内核技术 BC-Linux V8.2反对双内核技术,减少了BEK内核,BEK内核基于内核社区长期反对版本5.10进行定制化开发及加强,满足客户对于高版本内核的应用需要,同时反对默认内核4.19版本,满足多场景需要; ML/LT内核 提供对ML内核(mainline)及LT内核(longterm)的反对,并定期维护更新。 性能加强及零碎性能优化 启动工夫优化:实现内核启动工夫深度优化,同环境下内核启动工夫相比CentOS晋升30%以上,系统启动工夫相比CentOS晋升10%以上;内存使用率优化,晋升物理机可用内存大小7%;反对page owner个性,可用于定位内核内存透露和驱动应用大量内存等问题;残缺反对cgroup v2,提供多种 IO 隔离计划,包含buffer IO 限流(cgroup writeback),blk-iocost 权重管制等,解决长期以来IO不能彻底隔离的难题;反对XDP(eXpress Data Path)高性能内核网络协议,绕开了传统TCP/IP内核协定栈,UDP性能晋升1倍以上,近于DPDK等用户态网络计划的性能;反对随机化闲暇列表,进步了间接映射内存侧缓存的性能和利用率;引入CPU离线调度算法框架,无效晋升零碎CPU利用率,反对离线在线业务混布;新增实现TCP层服务监控性能,反对内核态采集TCP服务状态,可用于定位网络问题发现性能瓶颈;IO性能加强:依据fio测试后果,BC-Linux V8.2相比CentOS 8.2在随机写性能方面加强15%左右,程序读性能加强4%左右;内存加强:依据ramspeed 和stream测试后果,BC-Linux V8.2内存综合性能较CentOS 8.2晋升6%左右。BC-Linux V8.2提供从CentOS 8零碎到BC-Linux 8的迁徙工具,帮忙零碎及利用的顺滑迁徙,次要有以下长处: 反对用户从CentOS 8平滑迁徙到BC-Linux 8,业务不受影响;操作简略,执行单指令后工具自动化实现,无需人工干预;帮忙客户解决CentOS 8停服的懊恼,实现零碎平稳过渡。 BC-Linux V8.2版本采纳多种平安加强的伎俩晋升零碎的安全性。 可信计算 BC-Linux V8.2将TPM2.0模块和ACM作为可信根,对服务器进行可信启动动态度量,实现从服务器上电到操作系统启动之间的信赖链,应用IMA(完整性度量框架),实现对可执行文件进行运行时动静完整性度量。 平安加固 BC-Linux V8.2集成平安加固性能,为BC-Linux操作系统提供了平安加固、零碎软件包破绽检测、rootkit入侵检测等性能,提供系统安全基线的一键化配置、回退、生成检测报告,疾速系统漏洞扫描、报告输入等操作。 双因子认证 BC-Linux V8.2集成双因子认证性能,采纳基于工夫、事件和密钥三变量而产生的一次性明码来代替传统的动态明码,实现更加平安的用户认证。 ...

August 11, 2021 · 1 min · jiezi

关于linux:ubuntu-安装redis并配置远程访问

试验平台 bot@iZuf6fqrfwlp1il1u8neqfZ:/etc/redis$ uname -aLinux iZuf6fqrfwlp1il1u8neqfZ 5.4.0-65-generic #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linuxbot@iZuf6fqrfwlp1il1u8neqfZ:/etc/redis$ redis-server --versionRedis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923在 ubuntu 中装置 redis 能够应用如下的命令: sudo apt install redis批改 redis.conf 配置文件 sudo vim /etc/redis/redis.conf批改一 找到bind 127.0.0.1,把这行后面加个#正文掉再查找protected-mode yes 把yes批改为no,而后:wq保留文件服务关掉重新启动即可sudo service redis restart如果是云服务器,记得去关上6379端口(就是那个管制台上的平安啥啥的,不是服务器自身的防火墙)redis 近程连贯的命令 redis-cli -h host -p port -a password查看连接数 info clients

August 11, 2021 · 1 min · jiezi

关于linux:Linux之traceroute命令

显示数据包到主机间的门路,traceroute命令用于追踪数据包在网络上的传输时的全副门路,它默认发送的数据包大小是40字节。通过traceroute咱们能够晓得信息从你的计算机到互联网另一端的主机是走的什么门路。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的门路可能会不一样,但基本上来说大部分时候所走的路由是雷同的。 traceroute通过发送小的数据包到目标设施直到其返回,来测量其须要多长时间。一条门路上的每个设施traceroute要测3次。输入后果中包含每次测试的工夫(ms)和设施的名称(如有的话)及其ip地址。 Traceroute 的实现一共有三种办法,别离是:TCP traceroute(应用 tracetcp 程序能够实现)UDP traceroute(Cisco 和 Linux 默认状况下应用)ICMP traceroute ( MS Windows 默认状况下应用)命令格局traceroute(选项)(参数) 命令选项-d:应用Socket层级的排错性能;-f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;-F:设置勿离断位;-g<网关>:设置起源路由网关,最多可设置8个;-i<网络界面>:应用指定的网络界面送出数据包;-I:应用ICMP回应取代UDP材料信息;-m<存活数值>:设置检测数据包的最大存活数值TTL的大小;-n:间接应用IP地址而非主机名称;-p<通信端口>:设置UDP传输协定的通信端口;-r:疏忽一般的Routing Table,间接将数据包送到远端主机上。-s<起源地址>:设置本地主机送出数据包的IP地址;-t<服务类型>:设置检测数据包的TOS数值;-v:具体显示指令的执行过程;-w<超时秒数>:设置期待远端主机回报的工夫;-x:开启或敞开数据包的正确性测验。命令参数主机:指定目标主机IP地址或主机名。简略用法> traceroute rumenz.comtraceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets 1 192.168.0.1 (192.168.0.1) 1.242 ms 0.949 ms 2.494 ms 2 192.168.1.1 (192.168.1.1) 1.337 ms 1.101 ms 0.953 ms 3 100.64.0.1 (100.64.0.1) 4.663 ms 28.187 ms 3.346 ms 4 111.175.227.145 (111.175.227.145) 7.321 ms 12.203 ms 10.503 ms 5 111.175.210.221 (111.175.210.221) 4.810 ms 7.400 ms 3.673 ms 6 202.97.17.5 (202.97.17.5) 20.276 ms 202.97.98.25 (202.97.98.25) 38.174 ms 202.97.17.1 (202.97.17.1) 28.942 ms 7 * 113.96.5.158 (113.96.5.158) 26.277 ms * 8 * * * 9 14.18.199.106 (14.18.199.106) 22.518 ms 20.543 ms 22.583 ms10 * * 14.18.199.74 (14.18.199.74) 22.378 ms11 * * *12 * * *13 * * *14 203.195.152.245 (203.195.152.245) 25.766 ms 21.599 ms *记录按序列号从1开始,每个记录就是一跳 ,每跳示意一个网关,咱们看到每行有三个工夫,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的工夫;如果用traceroute -q 4 rumenz.com,示意向每个网关发送4个数据包。 ...

August 10, 2021 · 4 min · jiezi

关于linux:Linux基础用户相关

getentgetent is a common way to look up in user details on Linux;getent is a Linux command that helps the user to get the entries in a number of important text files called databases; Supported databases: 1. passwd shadow2. group gshadow2. ahosts ahostsv4 ahostsv62. aliases ethers 4. hosts initgroups2. netgroup networks protocols rpc services Usage:getent [OPTION...] database [key ...] 用户相干文件/etc/passwd-- 格局:login_name:passwd(x):UID:GID:GECOS:home_directory:shell/etc/shadow-- 格局:login_name:passwd(sha512):从1970.01.01起到明码最近一次被批改的工夫:明码再过几天能够被变更(0-任意):明码再过几天必须被变更:明码过期前几天零碎揭示用户(默认7天):明码过期几天后账号被锁定:从1970.01.01算起,多少天后账号生效/etc/group/etc/gshadow 用户相干命令useradd useradd [OPTIONS] LOGINuseradd -D -- 默认配置/etc/default/useraddnewusers -- update and create new users in batch ...

August 10, 2021 · 1 min · jiezi

关于linux:离线安装rpm包并解决依赖升级vsftpd为例

背景 下载安装yum插件下载软件包及依赖 将指定目录下的rpm包及其依赖拷贝到离线的服务器装置 背景理论开发中,咱们的linux服务器是解决离线状态的,并不能拜访互联网。如果此时要在linux上装置或者降级软件,就只能通过rpm包的装置形式。rpm包装置有一个缺点,就是不能解决安装包的依赖问题,这也是为什么在联网状态大家都用yum的形式来装置软件了,因为yum能够主动解决依赖包问题。 解决思路:有人说就间接用rpm包来装置,短少哪个依赖包就去下载依赖包。这样原则上说是能够的,安装简单软件就能够采纳这种办法。不过通常咱们装置的rpm软件包依赖比拟多,不能手动去下载依赖包的,而且很多依赖包找不到。所以此时应该采纳yum命令来下载软件包,同时将其依赖一起下载下来。yum命令有这种性能,只下载安装包和依赖,然而不装置。采纳这种形式就须要有一台能联网linux,从能联网的linux上下载安装包及其依赖,而后拷贝到离线的服务器上,这样就能够轻松实现装置了 下载安装yum插件下载软件包及依赖装置yumdownload yum install yum-utils -y列出能联网零碎的所有可装置的vsftpd软件 yum list | grep vsftpd下载软件包vsftpd.x86_64及依赖到指定目录/root/package/httpd yumdownloader vsftpd.x86_64 --resolve --destdir=/root/package/httpd将指定目录下的rpm包及其依赖拷贝到离线的服务器装置将rpm安装包集中放在一个文件夹下,rpm可能一个或者多个,不要一个个去装置rpm,应用同时装置的命令,此时零碎就会正确的装置软件包 rpm -ivh --replacefiles *.rpm站在伟人的肩膀上能够看得更远

August 9, 2021 · 1 min · jiezi

关于linux:Linux之ping命令

ping命令是用于排除故障,测试和诊断网络连接问题的最罕用的命令之一。 Ping通过将一个或多个ICMP(Internet管制音讯协定)Echo申请包发送到指定指标IP并期待回复来工作。当指标IP收到包时,它将响应ICMP回复。 应用ping命令,咱们能够确定远程目标IP是处于活动状态还是非活动状态,找到与指标通信的往返提早并查看是否存在数据包失落。 ping命令是iputils(或iputils-ping)程序包的一部分,该程序包已事后装置在绝大多数Linux发行版上。ping命令也可用于Windows,MacOSX和FreeBSD。 命令格局ping [参数] [主机名或IP地址] 命令性能ping命令用于:确定网络和各内部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号申请蕴含一个网际协议(IP)和 ICMP 头,前面紧跟一个 tim 构造,以及来填写这个信息包的足够的字节。缺省状况是间断发送回送信号申请直到接管到中断信号(Ctrl-C)。 ping 命令每秒发送一个数据报并且为每个接管到的响应打印一行输入。ping 命令计算信号往返工夫和(信息)包失落状况的统计信息,并且在实现之后显示一个简要总结。ping 命令在程序超时或当接管到 SIGINT 信号时完结。Host 参数或者是一个无效的主机名或者是因特网地址。 命令参数-d 应用Socket的SO_DEBUG性能。-f 极限检测。大量且疾速地送网络封包给一台机器,看它的回应。-n 只输入数值。-q 不显示任何传送封包的信息,只显示最初的后果。-r 疏忽一般的Routing Table,间接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。-R 记录路由过程。-v 具体显示指令的执行过程。<p>-c 数目:在发送指定数目的包后进行。-i 秒数:设定距离几秒送一个网络封包给一台机器,预设值是一秒送一次。-I 网络界面:应用指定的网络界面送出数据包。-l 前置载入:设置在送出要求信息之前,后行收回的数据包。-p 范本款式:设置填满数据包的范本款式。-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。-t 存活数值:设置存活数值TTL的大小。ping的通的状况> ping 8.8.8.8PING 8.8.8.8 (8.8.8.8): 56 data bytes64 bytes from 8.8.8.8: icmp_seq=0 ttl=106 time=255.389 ms64 bytes from 8.8.8.8: icmp_seq=1 ttl=106 time=253.781 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=106 time=258.403 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=106 time=255.721 ms64 bytes from 8.8.8.8: icmp_seq=4 ttl=106 time=255.086 ms64 bytes from 8.8.8.8: icmp_seq=5 ttl=106 time=255.165 ms64 bytes from 8.8.8.8: icmp_seq=6 ttl=106 time=253.948 ms...ping不通的状况> ping 8.8.9.9PING 8.8.9.9 (8.8.9.9): 56 data bytesRequest timeout for icmp_seq 0Request timeout for icmp_seq 1Request timeout for icmp_seq 2Request timeout for icmp_seq 3Request timeout for icmp_seq 4Request timeout for icmp_seq 5Request timeout for icmp_seq 6...ping指定次数> ping -c 10 8.8.8.8PING 8.8.8.8 (8.8.8.8): 56 data bytes64 bytes from 8.8.8.8: icmp_seq=0 ttl=106 time=256.369 ms64 bytes from 8.8.8.8: icmp_seq=1 ttl=106 time=255.471 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=106 time=255.381 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=106 time=255.038 ms64 bytes from 8.8.8.8: icmp_seq=4 ttl=106 time=260.055 ms64 bytes from 8.8.8.8: icmp_seq=5 ttl=106 time=255.733 ms64 bytes from 8.8.8.8: icmp_seq=6 ttl=106 time=254.986 ms64 bytes from 8.8.8.8: icmp_seq=7 ttl=106 time=254.084 ms64 bytes from 8.8.8.8: icmp_seq=8 ttl=106 time=255.902 ms64 bytes from 8.8.8.8: icmp_seq=9 ttl=106 time=256.121 ms--- 8.8.8.8 ping statistics ---10 packets transmitted, 10 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 254.084/255.914/260.055/1.513 ms工夫距离和次数限度的ping> ping -c 10 -i 0.5 8.8.8.8PING 8.8.8.8 (8.8.8.8): 56 data bytes64 bytes from 8.8.8.8: icmp_seq=0 ttl=106 time=255.032 ms64 bytes from 8.8.8.8: icmp_seq=1 ttl=106 time=256.937 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=106 time=255.129 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=106 time=256.560 ms64 bytes from 8.8.8.8: icmp_seq=4 ttl=106 time=264.229 ms64 bytes from 8.8.8.8: icmp_seq=5 ttl=106 time=254.791 ms64 bytes from 8.8.8.8: icmp_seq=6 ttl=106 time=254.212 ms64 bytes from 8.8.8.8: icmp_seq=7 ttl=106 time=254.998 ms64 bytes from 8.8.8.8: icmp_seq=8 ttl=106 time=255.029 ms64 bytes from 8.8.8.8: icmp_seq=9 ttl=106 time=255.559 ms--- 8.8.8.8 ping statistics ---10 packets transmitted, 10 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 254.212/256.248/264.229/2.771 ms通过域名ping域名> ping -c 5 json.imPING json.im (150.109.147.28): 56 data bytes64 bytes from 150.109.147.28: icmp_seq=0 ttl=48 time=28.733 ms64 bytes from 150.109.147.28: icmp_seq=1 ttl=48 time=28.412 ms64 bytes from 150.109.147.28: icmp_seq=2 ttl=48 time=28.012 ms64 bytes from 150.109.147.28: icmp_seq=3 ttl=48 time=31.498 ms64 bytes from 150.109.147.28: icmp_seq=4 ttl=48 time=30.518 ms--- json.im ping statistics ---5 packets transmitted, 5 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 28.012/29.435/31.498/1.341 ms多参数应用> ping -i 1 -s 1024 -t 123 json.imPING json.im (150.109.147.28): 1024 data bytes1032 bytes from 150.109.147.28: icmp_seq=0 ttl=48 time=29.613 ms1032 bytes from 150.109.147.28: icmp_seq=1 ttl=48 time=28.530 ms1032 bytes from 150.109.147.28: icmp_seq=2 ttl=48 time=32.768 ms1032 bytes from 150.109.147.28: icmp_seq=3 ttl=48 time=29.014 ms1032 bytes from 150.109.147.28: icmp_seq=4 ttl=48 time=30.239 ms1032 bytes from 150.109.147.28: icmp_seq=5 ttl=48 time=27.815 ms1032 bytes from 150.109.147.28: icmp_seq=6 ttl=48 time=31.311 ms1032 bytes from 150.109.147.28: icmp_seq=7 ttl=48 time=34.554 ms1032 bytes from 150.109.147.28: icmp_seq=8 ttl=48 time=41.600 ms1032 bytes from 150.109.147.28: icmp_seq=9 ttl=48 time=29.513 ms1032 bytes from 150.109.147.28: icmp_seq=10 ttl=48 time=28.320 ms1032 bytes from 150.109.147.28: icmp_seq=11 ttl=48 time=29.449 ms1032 bytes from 150.109.147.28: icmp_seq=12 ttl=48 time=29.127 ms1032 bytes from 150.109.147.28: icmp_seq=13 ttl=48 time=28.583 ms1032 bytes from 150.109.147.28: icmp_seq=14 ttl=48 time=28.064 ms-i 3 发送周期为 3秒 -s 设置发送包的大小为1024 -t 设置TTL值为 255指定源接口(网卡)默认状况下,ping将通过默认路由发送ICMP包。如果您的计算机上有多个接口,则能够应用以下-I选项指定源接口:> ping -I eth0 8.8.8.8PING 8.8.8.8 (8.8.8.8) from 192.168.0.3 eth0: 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=2 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=4 ttl=109 time=200 ms64 bytes from 8.8.8.8: icmp_seq=5 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=6 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=7 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=9 ttl=109 time=201 ms64 bytes from 8.8.8.8: icmp_seq=10 ttl=109 time=201 ms...上面的命令将执行ping 8.8.8.8应用eth0作为源接口指定Internet协定运行ping命令时,它将应用IPv4或IPv6,具体取决于您的计算机DNS设置。ping -4 DESTINATION ping -6 DESTINATION ...

August 9, 2021 · 4 min · jiezi

关于linux:Bash-Shell脚本中的数组使用实例

数组是一个蕴含多个值的变量,这些值能够是雷同类型或不同类型。没有数组大小限度,也没有要求成员变量被间断索引或间断调配的限度。数组索引从0开始。1.申明一个数组并赋值在bash中,应用以下格局的变量时会主动创立数组: name[index]=valuename 是数组的名字。index 能够是任何数字或表达式,值必须等于或大于零。要拜访数组元素,请应用大括号,例如${name[index]}。上面是拜访Unix数组中的第二个元素,认为数组索引从0开始,所以Unix[1]就是第二个元素了。 [root@localhost ~]# cat arraymanip.sh ! /bin/bashUnix[0]='Debian'Unix[1]='Red hat'Unix[2]='Ubuntu'Unix[3]='Suse' echo ${Unix[1]}执行脚本,以下是输入内容: [root@localhost ~]# ./arraymain.sh Red hatBash Shell脚本中的数组应用实例Bash Shell脚本中的数组应用实例 2.在申明期间初始化数组不用独自初始化数组的每个元素,能够通过应用括号指定元素列表(由空格分隔)来申明和初始化数组。上面是语法: declare -a arrayname=(element1 element2 element3)如果元素具备空格字符,须要应用引号: [root@localhost ~]# cat arraymain2.sh ! /bin/bashdeclare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora') echo ${Unix[4]}上面是输入后果: [root@localhost ~]# ./arraymain2.sh FedoraBash Shell脚本中的数组应用实例Bash Shell脚本中的数组应用实例declare -a申明一个数组,括号中的所有元素都是数组的元素。 3.打印整个数组有多种办法能够打印整个数组。如果索引号是 @ 或者 * ,则援用数组的所有成员。能够应用bash shell中的循环语句遍历数组元素并进行打印。 [root@localhost ~]# cat arraymain.sh ! /bin/bashUnix[0]='Debian'Unix[1]='Red hat'Unix[2]='Ubuntu'Unix[3]='Suse' echo ${Unix[@]}上面是输入后果: [root@localhost ~]# ./arraymain.sh Debian Red hat Ubuntu SuseBash Shell脚本中的数组应用实例Bash Shell脚本中的数组应用实例 ...

August 9, 2021 · 3 min · jiezi

关于linux:五个最常出现的Linux故障处理方法

五个最常呈现的Linux故障解决办法1、如何判断端口是否放通?除了查看本机防火墙和云控制台平安组之外,能够通过 telnet 去连贯 2、磁盘满了如何查问哪些文件比拟大?# 查看当前目录下各文件、文件夹的大小du -h –max-depth=1 *# 查问当前目录总大小du -sh# 显示间接子目录文件及文件夹大小统计值du -h –max-depth=0 *3、如何查问服务器日志?运行命令tailf /var/log/messages 4、服务启动失败怎么办?当linux服务启动失败的时候,零碎会提醒咱们应用 journalctl -xe 命令来查问详细信息,定位服务不能启动的起因。 5、同一IP重复刷新页面导致服务器403错误处理mod_evasive是Apache进攻攻打的模块,有助于避免DoS、DDoS以及对Apache服务器的暴力攻打。它能够在攻打期间提供躲避口头,并通过电子邮件和系统日志工具报告滥用行为。该模块的工作原理是创立一个IP地址和URI的外部动静表,并回绝以下任何一个IP地址: 每秒申请同一页屡次每秒对同一个孩子收回50多个并发申请临时列入黑名单时提出任何要求如果满足上述任何条件,则发送403响应并记录IP地址。 查看Apache模块清单apachectl -M批改配置项在conf.d目录下找到mod_evasive.conf文件,进行配置(依据网站平安理论需要来) 本文由Websoft9原创公布,转载请注明出处。

August 9, 2021 · 1 min · jiezi

关于linux:Linux之route命令

route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由次要是动态路由。要实现两个不同的子网之间的通信,须要一台连贯两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux零碎中设置路由通常是为了解决以下问题:该Linux零碎在一个局域网中,局域网中有一个网关,可能让机器拜访Internet,那么就须要将这台机器的ip地址设置为Linux机器的默认路由。要留神的是,间接在命令行下执行route命令来增加路由,不会永恒保留,当网卡重启或者机器重启之后,该路由就生效了;能够在/etc/rc.local中增加route命令来保障该路由设置永恒无效。命令语法route(选项)(参数) 命令选项-A:设置地址类型;-C:打印将Linux外围的路由缓存;-v:详细信息模式;-n:不执行DNS反向查找,间接显示数字模式的IP地址;-e:netstat格局显示路由表;-net:到一个网络的路由表;-host:到一个主机的路由表。命令参数add:减少指定的路由记录;del:删除指定的路由记录;target:目标网络或目标主机;gw:设置默认网关;mss:设置TCP的最大区块长度(MSS),单位MB;window:指定通过路由表的TCP连贯的TCP窗口大小;dev:路由记录所示意的网络接口。显示以后路由> route 显示以后路由表(显示ip地址)> route -n route -n不执行DNS反向查找,间接显示数字模式的IP地址,列出速度会比route快 字段阐明 列含意Destination指标网络或指标主机。Destination 为 default(0.0.0.0)时,示意这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1)Gateway网关地址,0.0.0.0 示意以后记录对应的 Destination 跟本机在同一个网段,通信时不须要通过网关GenmaskDestination 字段的网络掩码,Destination 是主机时须要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0Flags标记,含意参考表格前面的解释Metric路由间隔,达到指定网络所需的直达数,是大型局域网和广域网设置所必须的 (不在Linux内核中应用。)Ref路由项援用次数 (不在Linux内核中应用。)Use此路由项被路由软件查找的次数Iface网卡名字,例如 eth0Flags 含意U 路由是流动的H 指标是个主机G 须要通过网关R 复原动静路由产生的表项D 由路由的后台程序动静地装置M 由路由的后台程序批改! 回绝路由主机路由路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。上面示例中,对于 10.0.0.8 这个主机,通过网关 192.168.0.1 网关路由:> route add -net 10.0.0.8 gateway 192.168.0.1 netmask 255.255.255.255 dev eth0> route -n Destination Gateway Genmask Flags Metric Ref Use Iface10.0.0.8 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0网络路由主机能够达到的网络。上面示例中,对于10.0.0.0/24这个网络,通过网关192.168.0.1网关路由:> route add -net 10.0.0.0/24 gateway 192.168.0.1 dev eth0> route -nDestination Gateway Genmask Flags Metric Ref Use Iface10.0.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0//或者> route add -net 10.0.0.0 gateway 192.168.0.1 dev eth0默认路由当指标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。> routedefault gateway 0.0.0.0 UG 100 0 0 eth0增加同一个局域网的主机不指定 gw 选项时,增加的路由记录不应用网关:> route add -net 10.10.1.0 netmask 255.255.255.0 dev eth0> routeDestination Gateway Genmask Flags Metric Ref Use Iface10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0屏蔽路由> route add -net 10.10.1.0 netmask 255.255.255.0 reject> routeDestination Gateway Genmask Flags Metric Ref Use Iface10.10.1.0 - 255.255.255.0 ! 0 - 0 -删除可用路由> route del -net 10.0.0.0 netmask 255.255.255.0同时匹配多个路由表时,执行一次删除一条删除和增加设置默认网关增加或删除默认网关时,Linux 会主动查看网关的可用性:> route add default gw 192.168.1.1SIOCADDRT: Network is unreachable> route del default gw 192.168.1.1SIOCDELRT: No such process原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 8, 2021 · 1 min · jiezi

关于linux:centos7安装升级切换gcc

装置gccyum install gccyum install gcc-c++降级gccx.x.xwget https://ftp.gnu.org/gnu/gcc/gcc-x.x.x....tar -xzvf gcc-x.x.x.tar.gzcd gcc-x.x.x./contrib/download_prerequisitesmkdir buildcd build../configure --prefix=/usr/local/gccx.x.x --enable-languages=c,c++ --disable-multilibmake -j4make installgcc -v查找所有gcc版本find /usr -name gcc 切换gcc版本to 4.8.5mkdir -p /usr/local/bin/gcc-9.3.0mv /usr/bin/gcc /usr/local/bin/gcc-9.3.0/ln -s /usr/local/gcc4.8.5/bin/gcc /usr/bin/gccmkdir -p /usr/local/bin/g++-9.3.0mv /usr/bin/g++ /usr/local/bin/g++-9.3.0/ln -s /usr/local/gcc4.8.5/bin/g++ /usr/bin/g++mkdir -p /usr/local/bin/c++-9.3.0mv /usr/bin/c++ /usr/local/bin/c++-9.3.0/ln -s /usr/local/gcc4.8.5/bin/c++ /usr/bin/c++to 9.3.0mkdir -p /usr/local/bin/gcc-4.8.5mv /usr/bin/gcc /usr/local/bin/gcc-4.8.5/mv /usr/local/bin/gcc-9.3.0/gcc /usr/bin/gccmkdir -p /usr/local/bin/g++- 4.8.5mv /usr/bin/g++ /usr/local/bin/g++-4.8.5/mv /usr/local/bin/g++-9.3.0/g++ /usr/bin/g++mkdir -p /usr/local/bin/c++- 4.8.5mv /usr/bin/c++ /usr/local/bin/c++-4.8.5/mv /usr/local/bin/c++-9.3.0/c++ /usr/bin/c++to 8.2.0mkdir -p /usr/local/bin/gcc-4.8.5mv /usr/bin/gcc /usr/local/bin/gcc-4.8.5/ln -s /usr/local/gcc8.2.0/bin/gcc /usr/bin/gccmkdir -p /usr/local/bin/g++-4.8.5mv /usr/bin/g++ /usr/local/bin/g++-4.8.5/ln -s /usr/local/gcc8.2.0/bin/g++ /usr/bin/g++mkdir -p /usr/local/bin/c++-4.8.5mv /usr/bin/c++ /usr/local/bin/c++-4.8.5/ln -s /usr/local/gcc8.2.0/bin/c++ /usr/bin/c++

August 8, 2021 · 1 min · jiezi

关于linux:Linux脚本错误没有那个文件或目录

linux下执行脚本的时候报错:没有那个文件或目录。ls看一下,是有文件的。起因:文件格式谬误。 首先,vim filename查看文件。而后用命令 :set ff看文件格式。可看到dos或unix的字样,如果确实是dos格局的,须要改成unix的。通过命令set ff=unix来批改,,而后保留退出后就能够运行了。

August 8, 2021 · 1 min · jiezi

关于linux:Linux-crontab使用说明

crontab是用来定期主动执行脚本的命令 罕用参数crontab -l列出所有定期主动执行的工作crontab -e编辑所有定期主动执行的工作工作格局 执行周期 脚本门路 日志输入例如: */5 * * * * /usr/local/agenttools/agent/check_tmp_agent.sh >/dev/null 2>&1执行周期* * * * *- - - - -| | | | || | | | +----- week (0 - 6) (sunday 0)| | | +---------- month (1 - 12) | | +--------------- day (1 - 31)| +-------------------- hour (0 - 23)+------------------------- minute (0 - 59)除了具体数值之外,可能会用到的特殊字符: *:取任意可能的值,:指定一个列表的取值,例如,10,12,14,20-:指定一个范畴的取值,例如,12-14/:指定步长的取值,也就是工夫距离频率,例如,*/30如果写在minute字段,示意每30分钟执行一次脚本门路脚本的绝对路径。 /usr/local/agenttools/agent/check_tmp_agent.sh日志输入>/dev/null 2>&1/dev/null代表设施空文件规范输出stdin的文件描述符为0规范输入stdout的文件描述符为1规范谬误stderr的文件描述符为2不输入日志 > /dev/null 2>&1规范输入日志 > /tmp/out.log或 1> /tmp/out.log规范谬误日志 ...

August 8, 2021 · 1 min · jiezi

关于linux:Linux之crontab命令

通过crontab 命令,咱们能够在固定的间隔时间执行指定的零碎指令或 shell script脚本。工夫距离的单位能够是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志剖析或数据备份等工作。> systemctl start/stop/restart/status cron命令格局crontab [-u user] filecrontab [-u user] { -e | -l | -r } 命令参数-u user:用来设定某个用户的crontab服务;file:file是命令文件的名字,示意将file做为crontab的工作列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将承受规范输出(键盘)上键入的命令,并将它们载入crontab。-e:编辑某个用户的crontab文件内容。如果不指定用户,则示意编辑以后用户的crontab文件。-l:显示某个用户的crontab文件内容,如果不指定用户,则示意显示以后用户的crontab文件内容。-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除以后用户的crontab文件。-i:在删除用户的crontab文件时给确认提醒。crontab 的文件格式 字段形容容许的值分钟一小时的第几分0-59小时一天的第几小时0-23日期一个月的的第几天1-31月份一年的第几个月1-12周几一周的第几天0-6命令命令能够被执行的任何命令罕用办法创立一个新的 crontab 文件,向cron过程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron过程依据它来确定应用哪个编辑器编辑crontab文件。99%的UNIX和LINUX用户都应用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在其中退出这样一行 EDITOR=vi; export EDITOR 而后保留并退出。无妨创立一个名为<user> cron的文件,其中<user>是用户名,例如, davecron。在该文件中退出如下的内容。# (put your own initials here)echo the date to the console every# 15minutes between 6pm and 6am0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console保留并退出。留神后面5个域用空格分隔。在下面的例子中,零碎将每隔1 5分钟向控制台输入一次以后工夫。如果零碎解体或挂起,从最初所显示的工夫就能够一眼看出零碎是什么工夫进行工作的。在有些零碎中,用tty1来示意控制台,能够依据理论状况对下面的例子进行相应的批改。为了提交你刚刚创立的crontab文件,能够把这个新创建的文件作为cron命令的参数 $ crontab davecron 当初该文件曾经提交给cron过程,它将每隔1 5分钟运行一次。同时,新创建文件的一个正本曾经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。应用-l参数列出crontab文件::> crontab -l0,15,30,45 18-06 * * * /bin/echo `date` > dev/tty1能够应用这种办法在$HOME目录中对crontab文件做一备份::$ crontab -l > $HOME/mycron ...

August 7, 2021 · 1 min · jiezi

关于linux:使用-APT-包管理器安装-JDK8-之后配置-JAVAHOME-环境变量

应用 APT 包管理器装置 JDK8 之后配置 JAVA_HOME 环境变量 参考文章:如何在 Ubuntu 20.04 上装置 Java Ubuntu下疾速装置JDK并设置JAVA_HOME 对应的 shell 脚本命令: echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" | sudo tee -a /etc/profile >/dev/null

August 7, 2021 · 1 min · jiezi

关于linux:Linux中buffcache占用过高解决方案

咱们在应用free -h查看零碎内存的时候,有工夫会发现buff/cache很高> free -h available 示意应用程序能够申请到的内存什么是buffbuff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设施的读写缓冲区。依据磁盘的读写设计的,把扩散的写操作集中进行,缩小磁盘碎片和硬盘的重复寻道,从而进步零碎性能。什么是cachecache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。把读取过的数据保存起来,从新读取时若命中(找到须要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会依据读取频率进行组织,把最频繁读取的内容放在最容易找到的地位,把不再读的内容一直往后排,直至从中删除。 它们都是占用内存。两者都是RAM中的数据。简略来说,buff是行将要被写入磁盘的,而cache是被从磁盘中读出来的。 目前过程正在理论被应用的内存的计算形式为used-buff/cache,通过开释buff/cache内存后,咱们还能够应用的内存量free+buff/cache。通常咱们在频繁存取文件后,会导致buff/cache的占用量增高。 革除buff/cache手动革除> sync> echo 1 > /proc/sys/vm/drop_caches> echo 2 > /proc/sys/vm/drop_caches> echo 3 > /proc/sys/vm/drop_cachessync:将所有未写的零碎缓冲区写到磁盘中,蕴含已批改的i-node、已提早的块I/O和读写映射文件echo 1 > /proc/sys/vm/drop_caches:革除page cacheecho 2 > /proc/sys/vm/drop_caches:革除回收slab分配器中的对象(包含目录项缓存和inode缓存)。slab分配器是内核中治理内存的一种机制,其中很多缓存数据实现都是用的pagecache。echo 3 > /proc/sys/vm/drop_caches:革除pagecache和slab分配器中的缓存对象。/proc/sys/vm/drop_caches的值,默认为0定时工作革除> vim clean.sh#!/bin/bash#每两小时革除一次缓存echo "开始革除缓存"sync;sync;sync #写入硬盘,避免数据失落sleep 20#提早20秒echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_caches> chmod +x clean.sh> crontab -e# 每两小时执行一次0 */2 * * * /opt/clean.sh设置crond启动以及开机自启systemctl start crond.servicesystemctl enable crond.service原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 6, 2021 · 1 min · jiezi

关于linux:建议收藏保姆级教程-图解Windows10优麒麟双系统安装

“大家好”--新人奇奇向您问好! 奇奇入职也有一段时间啦,通过了这段时间的学习,奇奇曾经把握了装机秘诀并制作了 保姆级 双系统装置教程,教你如何在 Windows 的根底上装置优麒麟,快来看看噻~ 为避免超速翻车,倡议通读全文后再进行操作。 (此处双系统以 Windows 10+优麒麟 20.04 LTS Pro 为例,其余版本的零碎仅供参考) 01装置前的筹备第一步:查看电脑根底信息 按"win+r"快捷键回车确认,输出"msinfo32",回车,呈现零碎信息界面,可查看 BIOS 模式: BIOS 有多种模式,此教程以 UEFI 模式为例; 第二步:下载优麒麟镜像 官网下载:(www.ubuntukylin.com/downloads/) 页面下方还有多个开源镜像站下载路径可供选择; 注:下载实现后,为确认优麒麟零碎镜像的完整性,能够应用 MD5 校验工具(网页搜寻下载即可)验证 MD5 值与官网的是否统一。 第三步:筹备一个 U 盘 关上冰箱门,拿出一个陈腐的U盘(或移动硬盘、DVD,此处以 U 盘为例)插在电脑上 要求:U 盘内存大于 4G; 第四步:制作启动盘 此处举荐 Ventoy,下载链接:https://www.lanzoui.com/b01bd... 抉择结尾为 windows.zip 的最新版本进行下载解压,接着进入解压目录,双击运行 Ventoy2Disk.exe。 运行界面如下图所示: ① 是插入的 U 盘信息; ② 是此 Ventoy 的版本信息; ③ 是 U 盘内的 Ventoy 版本信息(没有装置 Ventoy 的显示为空); ④ 是装置选项,点击装置,就能够将 Ventoy 装置进对应的 U 盘里; ...

August 6, 2021 · 2 min · jiezi

关于linux:make-menuconfig-cursesh-No-such-file-or-directory

sudo apt-get install libncurses5-dev

August 6, 2021 · 1 min · jiezi

关于linux:内核热补丁真的安全么

简介: Linux 内核函数的热替换“撞上”函数调用约定还靠谱吗? Linux 内核热补丁能够修复正在运行的 linux 内核,是一种维持线上稳定性不可短少的措施,当初比拟常见的比方 kpatch 和 livepatch。内核热补丁能够修复内核中正在运行的函数,用已修复的函数替换掉内核中存在问题的函数从而达到修复目标。 函数替换的思维比较简单,就是在执行旧函数时绕开它的执行逻辑而跳转到新的函数中,有一种比较简单粗犷的形式,就是将原函数的第一条指令批改为“ jump 指标函数”指令,即间接跳转到新的函数以达到替换目标。 那么,问题来了,这么做靠谱吗?间接将原函数的第一条指令批改为 jump 指令,会毁坏掉原函数和它的调用者之间的寄存器上下文关系,存在安全隐患!本文会针对该问题进行摸索和验证。 安全性冲击:问题出现对于函数调用,假如存在这样两个函数 funA 和 funB,其中 funA 调用 funB 函数,这里称 funA 为 caller(调用者),funB 为 callee(被调用者),funA 和 funB 都应用了雷同的寄存器 R,如下所示: 图1 funA 和 funB 都应用了寄存器 R,funA 再次应用 R 时曾经被 funB 批改 因而,当 funA 再次应用到 R 的数据曾经是谬误的数据了。如果 funA 在调用 funB 前保留寄存器 R 中的数据,funB 返回后再将数据恢复到 R 中,或者 funB 先保留 R 中原有的数据,而后在返回前复原,就能够解决这类问题。 惟一的调用约定 那寄存器该由 caller 还是 callee 来保留?这就须要遵循函数的调用约定(call convention),不同的 ABI 和不同的平台,函数的调用约定是不一样的,对于 Linux 来说,它遵循的是 System V ABI 的 call convention,x86_64 平台下函数调用约定有且只有一种,调用者 caller 和被调用者 callee 须要对相应的寄存器进行保留和复原操作: ...

August 6, 2021 · 7 min · jiezi

关于linux:非root用户解决lib64libstdcso6-version-CXXABI138‘

export LD_PRELOAD=/home/user/.local/lib64/libstdc++.so.6

August 6, 2021 · 1 min · jiezi

关于linux:protobuf版本冲突

####### add protobuf lib path #########(动静库搜寻门路) 程序加载运行期间查找动态链接库时指定除了零碎默认门路之外的其余门路export LD_LIBRARY_PATH=/home/user/local/protobuf/3.17.1/lib/:$LD_LIBRARY_PATH#(动态库搜寻门路) 程序编译期间查找动态链接库时指定查找共享库的门路export LIBRARY_PATH=/home/user/local/protobuf/3.17.1/lib/:$LIBRARY_PATH#执行程序搜寻门路export PATH=/home/user/local/protobuf/3.17.1/bin/:$PATH#c程序头文件搜寻门路export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/user/local/protobuf/3.17.1/include/google/protobuf/#c++程序头文件搜寻门路export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/user/local/protobuf/3.17.1/include/google/protobuf/#pkg-config 门路export PKG_CONFIG_PATH=/home/user/local/protobuf/3.17.1/lib/pkgconfig/

August 6, 2021 · 1 min · jiezi

关于linux:Linux之lsof命令

lsof(list open files)是一个查看以后系统文件的工具。在linux环境下,任何事物都以文件的模式存在,通过文件不仅仅能够拜访惯例数据,还能够拜访网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协定 (UDP) 套接字等,零碎在后盾都为该应用程序调配了一个文件描述符,该文件描述符提供了大量对于这个应用程序自身的信息。装置lsofCentos > yum install lsof -yUbuntu > sudo apt-get install lsof -y命令格局lsof [参数][文件] 命令性能用于查看你过程开打的文件,关上文件的过程,过程关上的端口(TCP、UDP)。找回/复原删除的文件。是非常不便的零碎监督工具,因为lsof须要拜访外围内存和各种文件,所以须要root用户执行。lsof关上的文件能够是:1.一般文件2.目录3.网络文件系统的文件4.字符或设施文件5.(函数)共享库6.管道,命名管道7.符号链接8.网络文件(例如:NFS file、网络socket,unix域名socket)9.还有其它类型的文件,等等命令参数-a 列出关上文件存在的过程-c<过程名> 列出指定过程所关上的文件-g 列出GID号过程详情-d<文件号> 列出占用该文件号的过程+d<目录> 列出目录下被关上的文件+D<目录> 递归列出目录下被关上的文件-n<目录> 列出应用NFS的文件-i<条件> 列出符合条件的过程。(4、6、协定、:端口、 @ip )-p<过程号> 列出指定过程号所关上的文件-u 列出UID号过程详情-h 显示帮忙信息-v 显示版本信息列出零碎所有关上的文件> lsof | more 会有很多数据, 下面只截取了一部分字段阐明COMMAND:过程的名称PID:过程标识符PPID:父过程标识符(须要指定-R参数)USER:过程所有者PGID:过程所属组FD:文件描述符,应用程序通过文件描述符辨认该文件。如cwd、txt等TYPE:文件类型,如DIR、REG等,常见的文件类型 (1)DIR:示意目录(2)CHR:示意字符类型(3)BLK:块设施类型(4)UNIX: UNIX 域套接字(5)FIFO:先进先出 (FIFO) 队列(6)IPv4:网际协议 (IP) 套接字DEVICE:指定磁盘的名称SIZE:文件的大小NODE:索引节点(文件在磁盘上的标识)NAME:关上文件的确切名称FD 阐明 查看/bin/bash被谁占用> lsof /bin/bashCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 14443 root txt REG 253,1 960392 140072 /usr/bin/bash递归查看当前目录文件信息> lsof .COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 14443 root cwd DIR 253,1 4096 131073 .lsof 16522 root cwd DIR 253,1 4096 131073 .lsof 16523 root cwd DIR 253,1 4096 131073 .子目录文件占用状况也显示进去> lsof +D .COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 14443 root cwd DIR 253,1 4096 131073 .lsof 16426 root cwd DIR 253,1 4096 131073 .lsof 16427 root cwd DIR 253,1 4096 131073 .YDService 17532 root 27r REG 253,1 79613 131087 ./.bash_history不应用+D选项,遍历查看某个目录的所有文件信息的办法> lsof | grep "rumenz/temp"列出某个用户关上的文件信息> lsof -u root | more ...

August 5, 2021 · 2 min · jiezi

关于linux:SparkSQL极速入门-整合Kudu实现广告业务数据分析

download:SparkSQL极速入门 整合Kudu实现广告业务数据分析服务器端代码,server_tcp.py !/usr/bin/env python-- coding:utf-8 --执行客户端发送过去的命令,并把执行后果返回给客户端import socket, traceback, subprocess host = ''port = 51888 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port))s.listen(1) while 1: try: client_socket, client_addr = s.accept()except Exception, e: traceback.print_exc() continuetry: print 'From host:', client_socket.getpeername() while 1: command = client_socket.recv(4096) if not len(command): break print client_socket.getpeername()[0] + ':' + str(command) # 执行客户端传递过去的命令 handler = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) output = handler.stdout.readlines() if output is None: output = [] for one_line in output: client_socket.sendall(one_line) client_socket.sendall("\n") client_socket.sendall("ok")except Exception, e: traceback.print_exc()try: client_socket.close()except Exception, e: traceback.print_exc()2.客户端代码 client_tcp.py ...

August 5, 2021 · 1 min · jiezi

关于linux:Linux之at命令

当应用shell脚本时,你可能想在某个特定的工夫运行shell脚本,Linux零碎中提供了多个在特定工夫运行shell脚本的办法,其中一种办法就是应用at命令。 at命令容许指定Linux零碎何时运行脚本,at命令会将作业提交到队列中,指定shell何时运行该作业。at的守护过程atd会当前台模式运行,查看作业队列来运行作业。atd守护过程会查看零碎上的一个非凡目录来获取at命令的提交的作业。默认状况下,atd守护过程每60秒查看一次目录。有作业时,会查看作业运行工夫,如果工夫与以后工夫匹配,则运行此作业。 at容许应用一套相当简单的指定工夫的办法。它可能承受在当天的hh:mm(小时:分钟)式的工夫指定。如果该工夫已过来,那么就放在第二天执行。当然也可能应用midnight(深夜),noon(中午),teatime(饮茶工夫,个别是下午4点)等比拟含糊的 词语来指定工夫。用户还可能采纳12小时计时制,即在工夫前面加上AM(上午)或PM(下午)来阐明是上午还是下午。 也可能指定命令执行的具体日期,指定格局为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定工夫的前面。 下面介绍的都是相对计时法,其实还可能应用绝对计时法,这对于安顿不久就要执行的命令是很有益处的。指定格局为:now + count time-units,now就是以后工夫,time-units是工夫单位,这里可能是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是工夫的数量,到底是几天,还是几小时,等等。 更有一种计时办法就是间接应用today(明天)、tomorrow(今天)来指定实现命令的工夫。 须要装置此命令Centos > yum -y install at> systemctl start atd> systemctl enable atdUbuntu > sudo apt-get install at -y命令格局at [参数] [工夫] 命令性能在一个指定的工夫执行一个指定工作,只能执行一次命令参数-m 当指定的工作被实现之后,将给用户发送邮件,即便没有规范输入-I atq的别名-d atrm的别名-v 显示工作将被执行的工夫-c 打印工作的内容到规范输入-V 显示版本信息-q<列队> 应用指定的列队-f<文件> 从指定文件读入工作而不是从规范输出读入-t<工夫参数> 以工夫参数的模式提交要运行的工作其它命令atq 查看所有工作atrm 删除一个工作at容许应用一套相当简单的指定工夫的办法。他可能承受在当天的hh:mm(小时:分钟)式的工夫指定。如果该工夫已过来,那么就放在第二天执行。当然也可能应用midnight(深夜),noon(中午),teatime(饮茶工夫,个别是下午4点)等比拟含糊的 词语来指定工夫。用户还可能采纳12小时计时制,即在工夫前面加上AM(上午)或PM(下午)来阐明是上午还是下午。 也可能指定命令执行的具体日期,指定格局为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定工夫的前面。 下面介绍的都是相对计时法,其实还可能应用绝对计时法,这对于安顿不久就要执行的命令是很有益处的。指定格局为:now + count time-units ,now就是以后工夫,time-units是工夫单位,这里可能是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是工夫的数量,到底是几天,还是几小时,等等。 更有一种计时办法就是间接应用today(明天)、tomorrow(今天)来指定实现命令的工夫。三天后的下午 4 点执行 /bin/lsat 4pm+ 3daysat> /bin/lsat> <EOT>job 5 at Tue Mar 16 16:00:00 2021<EOT>按按ctrl+d今天10点钟,输入工夫到指定文件内> at 10:00 tomorrowat> date > /tmp/a.logat> <EOT>job 6 at Sun Mar 14 10:00:00 2021<EOT>按按ctrl+d查看at的工作列表> atq5 Tue Mar 16 16:00:00 2021 a root6 Sun Mar 14 10:00:00 2021 a root显示曾经设置的工作内容> at -c 5#!/bin/sh/bin/ls删除曾经设置的工作> atrm 5原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 4, 2021 · 1 min · jiezi

关于linux:技术解析一文看懂-Anolis-OS-国密生态-龙蜥专场

简介: Anolis OS国密是社区在Anolis OS上做的国密技术解决方案。编者注:本文系两位演讲者整顿,他们在2021年阿里云开发者大会的「开源操作系统社区和生态分论坛」上带了分享,演讲主题为《国密技术开发与实际》。,为国内的根底软件生态添砖加瓦。 作者别离是阿里云技术专家张天佳与蚂蚁团体高级技术专家杨洋。张天佳次要负责Anolis OS上国密技术的开发和利用,参加实现了 libgcrypt 中的国密算法和 linux内核中的 SM2 算法;杨洋则主导开发了 BabaSSL,也是国内惟一的一个 OpenSSL maintainer,参加起草并推动 RFC8998 规范国际化。置信两位技术人的干货分享,能给开发者们带来肯定的思考。 以下为技术内容解析: 国密——明码算法的国产化说到明码算法,大家肯定很相熟 MD5,AES,RSA 这些通用的国际标准算法,这也是目前咱们广泛采纳的密码学算法,它们在数据安全、通信、区块链等泛滥畛域都有着宽泛的利用。 家喻户晓,这些算法规范都是国外制订的,在某些状况下这会对国内信息安全有不利影响。当下有实力的国家,甚至有些大公司都制订了本人的算法规范。 顾名思义,国密就是明码算法的国产化,跟其它畛域一样,明码算法的国产化曾经势不可挡,这也是咱们必须要做的事件。中国的国密算法为咱们提供了一个新的抉择,在必要的场合中能够抉择代替那些国内支流算法,尤其是当下国际贸易抵触,技术封闭不可漠视的大环境下,大规模推广和采纳国密算法将为国内重要的网络基础设施提供牢靠的数据安全保障。 国密是什么?我是谁,从哪里来? 国密是一个口语化的称说,官网名称是国家商用明码,简称商密,拼音缩写是SM,这也是国密规范中具体算法名字的起源。国密是用于商用的、不波及国家机密的明码技术。 国密规范齐全由中国明码管理局制订,次要的技术实现也根本是国内开发人员实现的,这对解脱国外的明码技术和产品依赖是十分无利的。 到哪里去? 自2012 以来,SM2/3/4 的国密规范陆续颁布,目前国密技术生态根本处于一个正在逐渐走向成熟的阶段,但国内明码根底软件在采纳国密算法方面仍处于碎片化的状态,比方咱们常常能够看到各种集体或组织名义开源的反对国密算法的库;此外这些开源我的项目的安全更新和社区沉闷也都做的不好。国密的推广依然须要咱们中国根底软件的开发者和用户共同努力。 2020年1月1日,《中华人民共和国明码法》正式施行,从法律层面标准了国家商用明码的利用和治理,这也为推广和利用国密提供了必要的法律保障。 与国内算法的比照 这里是国密算法和国内通用算法的一个比照,能够直观地看到国密的一个根本状况: 针对各种罕用的国内能用算法类型,比方对称算法,公钥算法和音讯摘要算法,国密规范都定义了对应的雷同性能的国密算法,比方 SM4 提供了与 AES 同样的加密强度,并且反对各种加密模式;SM2 是基于椭圆曲线的公钥算法,同时定义了非对称加解密,数字签名和密钥替换规范,绝对于 RSA,SM2 的密钥更短,但反对的加密强度却更高;SM3 是国密定义的音讯摘要算法规范,摘要长度是固定的256位,强度等同于 SHA256。 除了根底的算法,国密规范也定义了TLCP国密双证书协定,用以反对国内的传输层平安协定。这里还有一个好消息,往年三月份,TLS1.3+ 国密单证书协定正式被国际标准所抵赖,并且以 RFC8998 规范公布,这意味着咱们能够抉择在TLS1.3协定中应用残缺的国密套件,目前咱们也在分割正规浏览器厂商反对这个规范的施行和利用。 同时国密也定义了应用国密算法的 X509 证书,应用 SM3 哈希算法,SM2 算法作为数字签名,证书类型是 SM2-with-SM3。 对开发者来说,国密提供了一个抉择,能够抉择从国内通用算法平滑迁徙过去。除此之外,国密还有其它一些算法规范,是不太罕用的,比方 SM9,ZUC 算法等。 BabaSSL 的前世今生BabaSSL 是主打国密的明码算法库,与 OpenSSL 1.1.1 放弃兼容,作为国密的明码算法解决方案而诞生。 BabaSSL 是基于之前蚂蚁团体和阿里团体外部的 OpenSSL 版本合并而来,并首次进行了开源。BabaSSL 的含意是:乖巧、轻快且靠谱的密码学和 SSL/TLS 工具库。 ...

August 4, 2021 · 1 min · jiezi

关于linux:Linux系统Manjaro分辨率调整恢复

意外状况之前将一台老笔记本换成了Manjaro零碎,外接显示器时忽然原笔记本电脑屏幕的分辨率升高,并且在零碎设置页面中失落了原有的1380×760分辨率,最大只有960×540的分辨率。 问题解决-通过命令行增加自定义分辨率既然是linux零碎,设置无关的内容肯定能够用命令行解决。 零碎设置失落了分辨率模式,本人手动加上去就行了。 第一步,xrandr 查 首先用管理员权限,查看以后显示器的分辨模式 sudo xrandr -q [parrysms@parrysms-pc ~]$ sudo xrandr -qScreen 0: minimum 8 x 8, current 960x540, maximum 32767 x 32767LVDS1 connected primary 960x540+0+0 (normal left inverted right x axis y axis) 310mm x 170mm 960x540 59.82 864x486 60.00 59.92 59.57 640x480 59.94 DP1 disconnected (normal left inverted right x axis y axis)HDMI1 disconnected (normal left inverted right x axis y axis)VGA1 disconnected (normal left inverted right x axis y axis)命令行会显示零碎里有的分辨率。如果没有你显示器对应的分辨率,那么就须要自行添加。 ...

August 4, 2021 · 2 min · jiezi

关于linux:Linux之watch命令

能够将命令的输入后果输入到规范输出设备,多用于周期性执行命令/定时执行命令,watch命令 以周期性的形式执行给定的指令,指令输入以全屏形式显示。watch是一个十分实用的命令,根本所有的Linux发行版都带有这个小工具,如同名字一样,watch能够帮你监测一个命令的运行后果,防止反复手动执行命令命令格局watch [参数] [命令] 命令性能能够将命令的输入后果输入到规范输出设备,多用于周期性执行命令/定时执行命令命令参数-n或--interval watch缺省每2秒运行一下程序,能够用-n或-interval来指定距离的工夫。-d或--differences 用-d或--differences 选项watch 会高亮显示变动的区域。 而-d=cumulative选项会把变动过的中央(不论最近的那次有没有变动)都高亮显示进去。-t 或-no-title 会敞开watch命令在顶部的工夫距离,命令,以后工夫的输入。-h, --help 查看帮忙文档每隔1秒查看零碎网络连接状况> watch -n 1 -d netstat -tunlp 变动局部会着色退出watch:Ctrl+c每隔一秒高亮显示http链接数的变动状况> watch -n 1 -d 'pstree|grep http'隔一秒高亮显示http链接数的变动状况。 前面接的命令若带有管道符,须要加''将命令区域归整。实时查看模仿攻打客户机建设起来的连接数> watch 'netstat -an | grep:21 | \ grep<模仿攻打客户机的IP>| wc -l'监测当前目录变动> watch -d 'ls -l|grep tmp' 5秒一次输入零碎的均匀负载> watch -n 5 'cat /proc/loadavg'实现tail -f实时刷新文件> watch -n 1 tail /var/log/error.log实现一个简略的时钟> watch -n 1 " " 工夫1秒1秒的在刷新监督服务器以后用户登录的情况> watch -n 1 -d who原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

August 3, 2021 · 1 min · jiezi

关于linux:优麒麟云账户同步功能这个细节你解锁了吗

为了能疾速将本人的设置个性化,大部分用户都会抉择应用云账户来实现这一性能,那么咱们优麒麟用户该如何应用这一性能呢?上面小优就率领大家一起探寻下云账户同步性能的应用~ - 01 -什么是云账户同步云账户同步,以下对立简称为云同步。任意失常的麒麟 ID 用户可通过云同步来同步本人须要的机器设置以及资源配置,如桌面背景、头像、开始菜单、屏保、主题、图标设置、开机启动项、文件管理器等配置。 - 02 -同步流程以及形式首先,关上控制面板: 图1 控制面板主页 进入“账户”选项,点击“云账户”: 图2 云账户主界面-未登录 而后用麒麟 ID 登录云账户: 图3 云账户主界面-登录对话框 稍等云账户初始结束(依据网络状况决定等待时间),当左边退出按钮变成蓝色的按钮,并随同着加载动画的呈现,文字变成了“同步中”时,登录后的第一次同步开始了: 图4 同步状态 这次同步,如果你不是第一次应用,那么云同步会先将云端的配置下载下来,而后依据CAS(Compare And Set)准则进行同步项设置。当然,这里和零碎原语的 CAS 是有区别的,这里指的是比拟配置是否扭转:若对云端有扭转,批改成云端的配置;若无扭转,则不批改。 如果你是第一次应用,那么第一次登录时,主动同步的按钮默认是敞开的,须要自行关上按钮,进行第一次同步。第一次同步只会对云端上传本机开启了同步按钮的同步项进行配置。 同步形式次要有三种: 1、主动同步:当用户胜利登录之后,云同步会通过定时工作每隔大概五分钟进行一次上传同步来提交本地的设置更改,这个不须要用户操作,用户这边只会在界面看到退出按钮变成了蓝底的同步中按钮,且此时点击该按钮,会进行同步,然而不会退出,同步胜利后会更新同步工夫。 2、单项同步:当用户关上了任意一个同步项按钮时候,单项同步会在一秒后启动,这期间其余的同步项都是不可设置的,一旦同步结束,其它按钮照常设置。这样做是为了保障按钮点击可控性。单项同步的内容是将以后同步项的配置下载下来并 CAS 设置,同步胜利后会更新同步工夫,不做同步上传操作。 3、全项同步:当用户关上了主动同步按钮的时候,全项同步会在一秒后启动,同样这期间所有同步项是不能够设置的,要同步结束后,能力失常设置。全项同步的内容是将所有开启了的同步项进行同步下载操作一遍,性能相似第一次登录时的同步成果。同步胜利后会更新同步日期。 - 03 -同步项内容 图5 同步项内容 - 04 -同步异样类型云账户的异样大多数来自网络异样,因而云账户也很重视网络品质的检测,然而这还是起步阶段,所以还有很多中央须要欠缺,目前的次要异样分为两大类: 第一种:网络链路不通异样。这种状况下,所有按钮变成不可用状态。 图6 网络异样界面 第二种:同步失败异样。这种会敞开主开关,即敞开主动同步按钮,让用户决定是否持续同步。 图7 同步失败界面 如果用户在应用过程中,呈现了上述情况,倡议更换更好的网络环境或者过段时间再应用云账户,不然体验会极差。咱们也在致力推出新的设计模式下的云账户来解决 I/O 过多,影响内存性能,冗余的定时工作等问题。

August 3, 2021 · 1 min · jiezi

关于linux:Linux之iostat命令

Linux零碎中的 iostat是I/O statistics(输出/输入统计)的缩写,iostat工具将对系统的磁盘操作流动进行监督。它的特点是汇报磁盘流动统计状况,同时也会汇报出CPU应用状况。同vmstat一样,iostat也有一个弱点,就是它不能对某个过程进行深入分析,仅对系统的整体状况进行剖析。iostat属于sysstat软件包。能够用yum install sysstat 间接装置。命令格局iostat[参数][工夫][次数] 命令性能通过iostat不便查看CPU、网卡、tty设施、磁盘、CD-ROM 等等设施的流动状况, 负载信息。命令参数-C 显示CPU应用状况-d 显示磁盘应用状况-k 以 KB 为单位显示-m 以 M 为单位显示-N 显示磁盘阵列(LVM) 信息-n 显示NFS 应用状况-p[磁盘] 显示磁盘和分区的状况-t 显示终端和CPU的信息-x 显示详细信息-V 显示版本信息显示所有设施负载状况> iostat %user:CPU处在用户模式下的工夫百分比。%nice:CPU处在带NICE值的用户模式下的工夫百分比。%system:CPU处在零碎模式下的工夫百分比。%iowait:CPU期待输入输出实现工夫的百分比。%steal:管理程序保护另一个虚构处理器时,虚构CPU的有意识等待时间百分比。%idle:CPU闲暇工夫百分比。如果%iowait的值过高,示意硬盘存在I/O瓶颈,%idle值高,示意CPU较闲暇,如果%idle值高但零碎响应慢时,有可能是CPU期待分配内存,此时应加大内存容量。%idle值如果继续低于10,那么零碎的CPU解决能力绝对较低,表明零碎中最须要解决的资源是CPU。每隔2秒刷新显示,且显示3次> iostat 2 3 显示指定磁盘信息> df文件系统 1K-块 已用 可用 已用% 挂载点/dev/vda1 51474024 31149824 18018124 64% /devtmpfs 1931252 0 1931252 0% /devtmpfs 1941016 24 1940992 1% /dev/shmtmpfs 1941016 472 1940544 1% /runtmpfs 1941016 0 1941016 0% /sys/fs/cgrouptmpfs 388204 0 388204 0% /run/user/0> iostat -d /dev/vda1 ...

August 2, 2021 · 1 min · jiezi

关于linux:运维人不得不了解的eBPF入门指南新手建议收藏

eBPF(Extended Berkeley Packet Filter)的外围是驻留在 kernel 的高效虚拟机。最后的目标是高效网络过滤框架,前身是BPF,所以咱们先理解下BPF BPF框架上图是BPF的地位和框架,须要留神的是kernel和user应用了buffer来传输数据,防止频繁上下文切换。BPF虚拟机十分简洁,由累加器、索引寄存器、存储、隐式程序计数器组成。 示例接下来咱们看一下示例,过滤所有ip报文,能够应用 tcpdump -d ip 查看: (000) ldh [12] // 链路层第12字节的数据加载到寄存器,ethertype字段(001) jeq #0x800 jt 2 jf 3 // 比拟寄存器的ethertype字段是否为IP类型,true跳到2,false跳到3(002) ret #65535 // 返回true(003) ret #0 // 返回0BPF只应用了4条虚拟机指令,就能提供十分有用的IP报文过滤。 tcpdump -d tcp(000) ldh [12] // 链路层第12字节的数据(2字节)加载到寄存器,ethertype字段(001) jeq #0x86dd jt 2 jf 7 // 判断是否为IPv6类型,true跳到2,false跳到7(002) ldb [20] // 链路层第20字节的数据(1字节)加载到寄存器,IPv6的next header字段(003) jeq #0x6 jt 10 jf 4 // 判断是否为TCP,true跳到10,false跳到4(004) jeq #0x2c jt 5 jf 11 // 可能是IPv6分片标记,true跳到5,false跳到11(005) ldb [54] // 我编不上来了...(006) jeq #0x6 jt 10 jf 11 // 判断是否为TCP,true跳到10,false跳到11(007) jeq #0x800 jt 8 jf 11 // 判断是否为IP类型,true跳到8,false跳到11(008) ldb [23] // 链路层第23字节的数据(1字节)加载到寄存器,next proto字段(009) jeq #0x6 jt 10 jf 11 // 判断是否为TCP,true跳到10,false跳到11(010) ret #65535 // 返回true(011) ret #0 // 返回0以上是freebsd的BPF,Linux中应该不叫这个,叫LSF,本人看吧。 ...

August 2, 2021 · 1 min · jiezi

关于linux:一个用户登录会有哪些流程

The Login ProcessThe following step-by-step description shows what happens each time a user logs in to a UNIX computer system. Users enters their username.User enters their password.The operating system confirms your name and password.A "shell" is created for you based on your entry in the "/etc/passwd" file (in small businesses, this is usually a Bourne Shell).You are "placed" in your "home"directory.Startup information is read from the file named "/etc/profile". This file is known as the system login file. When every user logs in, they read the information in this file.Additional information is read from the file named ".profile" that is located in your "home" directory. This file is known as your personal login file. (This is the file that usually contains the "menu" program.)/etc/profile和/etc/bashrc傻傻分不清楚?profileprofile 是某个用户惟一的用来设置环境变量的中央, 因为用户能够有多个 shell 比方 bash, sh, zsh 之类的, 但像环境变量这种其实只须要在对立的一个中央初始化就能够了, 而这就是 profile. ...

August 2, 2021 · 1 min · jiezi

关于linux:LinuxVim-编辑器和恢复-ext4-下误删除文件Xmanager-工具

vim 次要模式介绍vim 命令模式问:vi 和 vim 是同一个软件包装置的吗?答:NO,vim 是 vi 的减少版,最显著的区别就是 vim 能够语法加亮,它齐全兼容 vi 查看一个命令,是哪个软件包,装置的: [root@xuegod63 ~]# rpm -qf /usr/bin/vim[root@xuegod63 ~]# which vim[root@xuegod63 ~]# rpm -qf `which vim` #`反引号,esc 按键下的键,反引号中可执行命令[root@xuegod63 ~]# rpm -qf $(which vi) #$(可执行命令)$() 与`` 都能够进行命令替换,命令替换与变量替换差不多,都是用来重组命令行的,先实现引号里的命令行,而后将其后果替换进去,再重组成新的命令行vim 编辑器的四种操作模式1.Vim 罕用 4 种模式.失常模式(Normal mode,俗称命令模式) ,命令行模式(Command-line mode)插入模式(Insert mode ,俗称编辑模式), 可视模式(Visual mode,俗称可视块模式) root@xuegod63 ~]# cp /etc/passwd a.txt[root@xuegod63 ~]# vim a.txt首次进入文件 ----失常模式(Normal mode,俗称命令模式)按下 I 键,呈现 “Insert” ----插入模式(Insert mode ,俗称编辑模式)按 Esc 键,再输出冒号: ----命令行模式(Command-line mode) 例 1 从编辑模式到命令行模式怎么切换? ...

August 2, 2021 · 5 min · jiezi

关于linux:内核报错kernelNMI-watchdog-BUG-soft-lockup-CPU1

集体博客:点击这里进入 1.景象形容系统管理员电话告诉,形容为一台服务器忽然无奈ssh连贯,登录服务器带外IP地址并进入近程控制台界面后,提醒Authentication error,重启后即可失常进入零碎,进入后过20分钟又进入死循环2.排查起因登录零碎后无任何操作报错如下: 询问了度娘,发现此报错为内核锁死,简称“死机”,询问管理员后得悉,近期服务器装置了docker,可能因为负载过高导致 Soft lockup:这个bug没有让零碎彻底死机,然而若干个过程(或者kernel thread)被锁死在了某个状态(个别在内核区域),很多状况下这个是因为内核锁的应用的问题。内核参数kernel.watchdog_thresh(/proc/sys/kernel/watchdog_thresh)零碎默认值为10。如果超过2*10秒会打印信息,留神:调整值时参数不能大于60Linux内核对于每一个cpu都有一个监控过程,在技术界这个叫做watchdog(看门狗)。通过ps –ef | grep watchdog可能看见,过程名称大略是watchdog/X(数字:cpu逻辑编号1/2/3/4之类的)。这个过程或者线程每一秒钟运行一次,否则会睡眠和待机。这个过程运行会收集每一个cpu运行时应用数据的工夫并且寄存到属于每个cpu本人的内核数据结构。在内核中有很多特定的中断函数。这些中断函数会调用soft lockup计数,他会应用以后的工夫戳与特定(对应的)cpu的内核数据结构中保留的工夫比照,如果发现以后的工夫戳比对应cpu保留的工夫大于设定的阀值,他就假如监测过程或看门狗线程在一个相当可观的工夫还没有执。Cpu软锁为什么会产生,是怎么产生的?如果linux内核是通过精心设计安顿的CPU调度拜访,那么怎么会产生cpu软死锁?那么只能说因为用户开发的或者第三方软件引入,看咱们服务器内核panic的起因就是qmgr过程引起。因为每一个有限的循环都会始终有一个cpu的执行流程(qmgr过程示一个后盾邮件的音讯队列服务过程),并且领有肯定的优先级。Cpu调度器调度一个驱动程序来运行,如果这个驱动程序有问题并且没有被检测到,那么这个驱动程序将会暂用cpu的很长时间。依据后面的形容,看门狗过程会抓住(catch)这一点并且抛出一个软死锁(soft lockup)谬误。软死锁会挂起cpu使你的零碎不可用。3.具体分析###### 1.零碎如下工夫2个工夫进行了重启: Mar 3 21:53:16 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@x86040.build.eng.bos.redhat.com)Mar 3 22:37:19 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@x86040.build.eng.bos.redhat.com) 在重启前的一段时间均曾经呈现了cpu软锁的景象,而深入分析cpu软锁,咱们依赖于kdump产生的vmcore数据. Mar 3 14:28:18 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [runc[1:CHILD]:52902]Mar 2 18:14:59 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#3 stuck for 23s! [runc:[1:CHILD]:55961]./systemctl_list-unit-files:kdump.service enabled 如果您之前曾经做过,那么请您额定批改/etc/sysctl.conf退出以下行:kernel.softlockup_panic = 1 而后执行"sysctl -p"使参数失效。这样当零碎呈现cpu软锁景象时,会主动触发kernel panic,此时如果kdump能够失常工作,会生成vmcore.并主动重新启动零碎2.另外在日志中咱们还留神了存在如下的告警,其和下面的soft lockup问题无间接关系.# cat messages | grep "SLUB: Unable to allocate memory on node" ...

August 2, 2021 · 1 min · jiezi

关于linux:内核报错kernelNMI-watchdog-BUG-soft-lockup-CPU1

集体博客:点击这里进入 1.景象形容系统管理员电话告诉,形容为一台服务器忽然无奈ssh连贯,登录服务器带外IP地址并进入近程控制台界面后,提醒Authentication error,重启后即可失常进入零碎,进入后过20分钟又进入死循环2.排查起因登录零碎后无任何操作报错如下: 询问了度娘,发现此报错为内核锁死,简称“死机”,询问管理员后得悉,近期服务器装置了docker,可能因为负载过高导致 Soft lockup:这个bug没有让零碎彻底死机,然而若干个过程(或者kernel thread)被锁死在了某个状态(个别在内核区域),很多状况下这个是因为内核锁的应用的问题。内核参数kernel.watchdog_thresh(/proc/sys/kernel/watchdog_thresh)零碎默认值为10。如果超过2*10秒会打印信息,留神:调整值时参数不能大于60Linux内核对于每一个cpu都有一个监控过程,在技术界这个叫做watchdog(看门狗)。通过ps –ef | grep watchdog可能看见,过程名称大略是watchdog/X(数字:cpu逻辑编号1/2/3/4之类的)。这个过程或者线程每一秒钟运行一次,否则会睡眠和待机。这个过程运行会收集每一个cpu运行时应用数据的工夫并且寄存到属于每个cpu本人的内核数据结构。在内核中有很多特定的中断函数。这些中断函数会调用soft lockup计数,他会应用以后的工夫戳与特定(对应的)cpu的内核数据结构中保留的工夫比照,如果发现以后的工夫戳比对应cpu保留的工夫大于设定的阀值,他就假如监测过程或看门狗线程在一个相当可观的工夫还没有执。Cpu软锁为什么会产生,是怎么产生的?如果linux内核是通过精心设计安顿的CPU调度拜访,那么怎么会产生cpu软死锁?那么只能说因为用户开发的或者第三方软件引入,看咱们服务器内核panic的起因就是qmgr过程引起。因为每一个有限的循环都会始终有一个cpu的执行流程(qmgr过程示一个后盾邮件的音讯队列服务过程),并且领有肯定的优先级。Cpu调度器调度一个驱动程序来运行,如果这个驱动程序有问题并且没有被检测到,那么这个驱动程序将会暂用cpu的很长时间。依据后面的形容,看门狗过程会抓住(catch)这一点并且抛出一个软死锁(soft lockup)谬误。软死锁会挂起cpu使你的零碎不可用。3.具体分析###### 1.零碎如下工夫2个工夫进行了重启: Mar 3 21:53:16 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@x86040.build.eng.bos.redhat.com)Mar 3 22:37:19 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@x86040.build.eng.bos.redhat.com) 在重启前的一段时间均曾经呈现了cpu软锁的景象,而深入分析cpu软锁,咱们依赖于kdump产生的vmcore数据. Mar 3 14:28:18 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [runc[1:CHILD]:52902]Mar 2 18:14:59 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#3 stuck for 23s! [runc:[1:CHILD]:55961]./systemctl_list-unit-files:kdump.service enabled 如果您之前曾经做过,那么请您额定批改/etc/sysctl.conf退出以下行:kernel.softlockup_panic = 1 而后执行"sysctl -p"使参数失效。这样当零碎呈现cpu软锁景象时,会主动触发kernel panic,此时如果kdump能够失常工作,会生成vmcore.并主动重新启动零碎2.另外在日志中咱们还留神了存在如下的告警,其和下面的soft lockup问题无间接关系.# cat messages | grep "SLUB: Unable to allocate memory on node" ...

August 2, 2021 · 1 min · jiezi

关于linux:使用NIM-Server网络半自动安装AIX系统

集体博客:点击这里进入 一、NIM配置1.装置NIMServer前筹备1.1.配置IP地址 # ifconfig –a #查看以后IP地址# # smitty mktcpip #设置IP地址#抉择第一块网卡(插网线的网卡),回车确认,呈现下图:配置主机名、IP地址、掩码、网关,回车确认;1.2.装置SSH服务AIX零碎默认不装置SSH,因而需提前装置相干软件包。1.3装置openssl软件包将第一张零碎安装盘插入光驱,在root用户下应用smitty installp命令装置software,抉择Install Software,按确定键按下F4键(字符终端应用Esc+4)关上表单抉择,/dev/cd0 (SATA DVD-RAM Drive),按确定键SOFTWARE to install选项,按下F4键(字符终端应用Esc+4)关上表单,并应用F7键(字符终端应用Esc+7)抉择openssl结尾的所有软件包,按确定键,“Accept new license agreements”抉择”Yes”,最初按确定键进行装置。1.4.装置openssh软件包同装置openssl软件包过程一样,SOFTWARE to install选项抉择openssh结尾的所有软件包,进行装置。留神必须先装置openssl,而后再装置openssh。1.5.装置实现后,输出lslpp -l openssh* 查看ssh版本。1.6.容许root用户应用ssh服务登录查看/etc/ssh/sshd_config文件,确认#PermitRootLogin 为yes。1.7.重启ssh服务 stopsrc -s sshd startsrc -s sshd1.8.查看ssh服务是否启动 lssrc -a |grep ssh 确认ssh服务为active状态 注:ssh能够在禁止以root用户登录telnet服务的前提下,持续通过root用户登录。2.配置NIM Master2.1.装置nim软件包 #smitty install #应用smitty工具装置软件包抉择 Install and Update Software,回车;抉择Install Software,回车确认;按F4,列出可选菜单;抉择USB(本案例应用USB装置的操作系统),回车确认;键盘高低键挪动光标到“SOFTWARE to install”,按F4列出菜单;按F7抉择NIM软件包: Network Install Manager - Master Tools、Network Install Manager – SPOT,回车确认; 键盘高低键挪动光标到“ACCEPT new license agreements?”,抉择YES,回车确认;2.2. 扩建文件系统因为新装置的文件系统不大,因而须要扩建文件系统,用于寄存镜像文件,以及网络装置的相干配置文件和数据文件。#chfs –a size=20G / #把 / 文件系统扩大到20G##df –g #查看文件系统应用状况#创立NIM服务应用的相干文件夹,nim服务默认应用/export文件夹;#mkdir /export/mksysb #用于寄存mksysb镜像文件##mkdir /export/res #用于寄存bosinst文件##mkdir /export/spot #用于寄存spot文件#上传mksysb镜像文件到/export/mksysb 目录下;2.3.编辑/ext/hosts文件在/etc/hosts文件中,寄存本机IP地址和对应主机名,同时须要把待装机器的IP地址和主机名在此文件中定义。2.4.配置NIMmaster服务#smitty nim #配置nim master服务抉择“Configure the NIM Environment”,回车确认;抉择“Advanced Configuration”,回车确认;抉择“Initialize the NIM Master Only”,回车确认;定义“Network Name”,可任意定义;定义“Primary Network Install Interface”,按F4抉择网卡(通常为之前配置的网卡);2.5.配置nim-mksysb资源#smitty nim抉择“Perform NIM Administration Tasks”,回车确认;抉择“Manage Resources”,回车确认;抉择“Define a Resource”,回车确认;抉择“mksysb = a mksysb image”,回车确认;定义Resource Name,可自定义;定义Server of Resource,F4抉择master;定义Location of Resource,把上传的mksysb镜像文件绝对路径写上;2.6.配置nim-spot资源# smitty nim > Perform NIM Administration Tasks > Manage Resources > Define a Resource 抉择“spot = Shared Product Object Tree - equivalent to /usr fil”,回车确认;定义Resource Name,可自定义;定义Server of Resource,F4抉择master;定义Source of Install Images,F4抉择nim_res resources mksysb;定义Location of Resource,填写spot文件寄存的地位,为之前创立的文件夹/export/spot;2.7.查看List All Network Install Resources# smitty nim > Perform NIM Administration Tasks > Manage Resources > List All Network Install Resources ...

August 2, 2021 · 2 min · jiezi

关于linux:Linux-ls-命令提示-Inputoutput-error

集体博客:点击这里进入 一.问题形容某一台跑批服务器硬盘无奈失常读写,提醒input/output error,服务器每天均需应用,询问状况后发现服务器首先为硬盘故障,更换硬盘后提醒此谬误(RAID已失常同步)二.排查问题呈现问题,先查看日志,收集日志进行剖析查看,日志剖析后果如下: [12922471.544897] smartpqi 0000:5e:00.0: reset of scsi 14:1:0:3: SUCCESS[12922471.545034] sd 14:1:0:3: [sdd] Medium access timeout failure. Offlining disk!...[12922471.546144] blk_update_request: I/O error, dev sdd, sector 2351217920[12922471.546473] sd 14:1:0:3: rejecting I/O to offline device[12922471.547836] XFS (sdd1): metadata I/O error: block 0x8bbac400 ("xlog_iodone") error 5 numblks 512[12922471.547840] XFS (sdd1): xfs_do_force_shutdown(0x2) called from line 1200 of file fs/xfs/xfs_log.c. Return address = 0xffffffffc07a1ea0[12922471.547866] XFS (sdd1): Log I/O Error Detected. Shutting down filesystem[12922471.547868] XFS (sdd1): Please umount the filesystem and rectify the problem(s)[12922471.547870] XFS (sdd1): metadata I/O error: block 0x8bbac600 ("xlog_iodone") error 5 numblks 512[12922471.547872] XFS (sdd1): xfs_do_force_shutdown(0x2) called from line 1200 of file fs/xfs/xfs_log.c. Return address = 0xffffffffc07a1ea0[12922471.547891] XFS (sdd1): metadata I/O error: block 0x2bc1a6c0 ("xfs_trans_read_buf_map") error 5 numblks 32[12922471.547898] XFS (sdd1): xfs_imap_to_bp: xfs_trans_read_buf() returned error -5.[12922471.548349] XFS (sdd1): metadata I/O error: block 0xc65b63f8 ("xfs_trans_read_buf_map") error 5 numblks 8[12922471.548390] XFS (sdd1): metadata I/O error: block 0x8bdb5820 ("xfs_trans_read_buf_map") error 5 numblks 32[12922471.548408] XFS (sdd1): xfs_imap_to_bp: xfs_trans_read_buf() returned error -5.[12922471.548412] XFS (sdd1): metadata I/O error: block 0x11771540 ("xfs_trans_read_buf_map") error 5 numblks 32[12922471.548417] XFS (sdd1): xfs_imap_to_bp: xfs_trans_read_buf() returned error -5....[15351852.339037] sd 14:1:0:3: rejecting I/O to offline device ...

August 2, 2021 · 1 min · jiezi

关于linux:linux系统下记录用户操作历史

集体博客:点击这里进入编辑/etc/profile文件开端增加下列代码,增加实现后保留退出执行命令:source /etc/profile ,退出以后终端,之后会在/var/log/history目录下以用户名、IP地址、登录工夫为文件名生成一个文件historyUSER=`whoami`USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]; thenUSER_IP=`hostname`fiif [ ! -d /var/log/history ]; thenmkdir /var/log/historychmod 777 /var/log/historyfiif [ ! -d /var/log/history/${LOGNAME} ]; thenmkdir /var/log/history/${LOGNAME}chmod 300 /var/log/history/${LOGNAME}fiexport HISTSIZE=4096DT=`date +"%Y%m%d_%H:%M:%S"`export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null

August 2, 2021 · 1 min · jiezi

关于linux:使用NIM-Server网络半自动安装AIX系统

集体博客:点击这里进入 一、NIM配置1.装置NIMServer前筹备1.1.配置IP地址 # ifconfig –a #查看以后IP地址# # smitty mktcpip #设置IP地址#抉择第一块网卡(插网线的网卡),回车确认,呈现下图:配置主机名、IP地址、掩码、网关,回车确认;1.2.装置SSH服务AIX零碎默认不装置SSH,因而需提前装置相干软件包。1.3装置openssl软件包将第一张零碎安装盘插入光驱,在root用户下应用smitty installp命令装置software,抉择Install Software,按确定键按下F4键(字符终端应用Esc+4)关上表单抉择,/dev/cd0 (SATA DVD-RAM Drive),按确定键SOFTWARE to install选项,按下F4键(字符终端应用Esc+4)关上表单,并应用F7键(字符终端应用Esc+7)抉择openssl结尾的所有软件包,按确定键,“Accept new license agreements”抉择”Yes”,最初按确定键进行装置。1.4.装置openssh软件包同装置openssl软件包过程一样,SOFTWARE to install选项抉择openssh结尾的所有软件包,进行装置。留神必须先装置openssl,而后再装置openssh。1.5.装置实现后,输出lslpp -l openssh* 查看ssh版本。1.6.容许root用户应用ssh服务登录查看/etc/ssh/sshd_config文件,确认#PermitRootLogin 为yes。1.7.重启ssh服务 stopsrc -s sshd startsrc -s sshd1.8.查看ssh服务是否启动 lssrc -a |grep ssh 确认ssh服务为active状态 注:ssh能够在禁止以root用户登录telnet服务的前提下,持续通过root用户登录。2.配置NIM Master2.1.装置nim软件包 #smitty install #应用smitty工具装置软件包抉择 Install and Update Software,回车;抉择Install Software,回车确认;按F4,列出可选菜单;抉择USB(本案例应用USB装置的操作系统),回车确认;键盘高低键挪动光标到“SOFTWARE to install”,按F4列出菜单;按F7抉择NIM软件包: Network Install Manager - Master Tools、Network Install Manager – SPOT,回车确认; 键盘高低键挪动光标到“ACCEPT new license agreements?”,抉择YES,回车确认;2.2. 扩建文件系统因为新装置的文件系统不大,因而须要扩建文件系统,用于寄存镜像文件,以及网络装置的相干配置文件和数据文件。#chfs –a size=20G / #把 / 文件系统扩大到20G##df –g #查看文件系统应用状况#创立NIM服务应用的相干文件夹,nim服务默认应用/export文件夹;#mkdir /export/mksysb #用于寄存mksysb镜像文件##mkdir /export/res #用于寄存bosinst文件##mkdir /export/spot #用于寄存spot文件#上传mksysb镜像文件到/export/mksysb 目录下;2.3.编辑/ext/hosts文件在/etc/hosts文件中,寄存本机IP地址和对应主机名,同时须要把待装机器的IP地址和主机名在此文件中定义。2.4.配置NIMmaster服务#smitty nim #配置nim master服务抉择“Configure the NIM Environment”,回车确认;抉择“Advanced Configuration”,回车确认;抉择“Initialize the NIM Master Only”,回车确认;定义“Network Name”,可任意定义;定义“Primary Network Install Interface”,按F4抉择网卡(通常为之前配置的网卡);2.5.配置nim-mksysb资源#smitty nim抉择“Perform NIM Administration Tasks”,回车确认;抉择“Manage Resources”,回车确认;抉择“Define a Resource”,回车确认;抉择“mksysb = a mksysb image”,回车确认;定义Resource Name,可自定义;定义Server of Resource,F4抉择master;定义Location of Resource,把上传的mksysb镜像文件绝对路径写上;2.6.配置nim-spot资源# smitty nim > Perform NIM Administration Tasks > Manage Resources > Define a Resource 抉择“spot = Shared Product Object Tree - equivalent to /usr fil”,回车确认;定义Resource Name,可自定义;定义Server of Resource,F4抉择master;定义Source of Install Images,F4抉择nim_res resources mksysb;定义Location of Resource,填写spot文件寄存的地位,为之前创立的文件夹/export/spot;2.7.查看List All Network Install Resources# smitty nim > Perform NIM Administration Tasks > Manage Resources > List All Network Install Resources ...

August 2, 2021 · 2 min · jiezi

关于linux:UNIX系列之AIX克隆系统盘

集体博客:点击这里进入 #### 前景提醒: 未曾有Nim环境,且网络环境起因无奈应用Nim装置,故采取应用克隆盘的形式进行装置首先应用光盘失常装置一台机器,并依照基线文档更新实现后从其余机器拔新盘并插入,插入后进行克隆操作(以下步骤为进入Raid卡将硬盘格局为JBOD) diagtask selectionraid array manageribm sas disk array managerlist saschange/show sas pdisk statusAIX零碎克隆步骤 lspvalt_disk_install -BOC hdiskX 指标盘lsvgalt_disk_install -X altinst_rootvglscfg -vl hdiskXrmdev -dl hdiskX查看所有网卡lscfg -vl ent* | more 后盾做镜像mirror命令 extendvg -f rootvg hdiskXmirrorvg -S rootvg hdiskX如果做镜像做错盘需先lsvg rootvg查看是否同步实现卸载mirrorunmirrorvg rootvg 盘名

August 2, 2021 · 1 min · jiezi

关于linux:Linux中Shell重定向

在shell脚本中,默认状况下,总是有三个文件处于关上状态,规范输出(键盘输入)、规范输入(输入到屏幕)、规范谬误(也是输入到屏幕),它们别离对应的文件描述符是 0,1,2 。& 是一个描述符,如果1或2前不加&,会被当成一个一般文件。> 默认为规范输入重定向,与 1> 雷同1>&2 意思是把规范输入重定向到规范谬误.2>&1 意思是把规范谬误输入重定向到规范输入。&>filename 意思是把规范输入和规范谬误输入都重定向到文件filename中.>&2即1>&2也就是把后果输入到和规范谬误一样/dev/null是一个文件,这个文件比拟非凡,所有传给它的货色它都抛弃掉规范输入和谬误输入> lsrumenz.txt> ls rumenz.txt 1.txtls: 1.txt: No such file or directoryrumenz.txt因为1.txt不存在,所以ls: 1.txt: No such file or directory就是谬误输入就是2。rumenz.txt文件是存在的,所以rumenz.txt就是规范输入。就是1。把上述的规范输入和谬误输入重定向到文件> ls rumenz.txt 1.txt 1>out.log 2>err.log> cat out.logrumenz.txt> rumenz cat err.logls: 1.txt: No such file or directoryout.log存的是规范输入err.log存的是谬误输入案例剖析> ls rumenz.txt 1.txt > out.txtls: 1.txt: No such file or directory> cat out.txtrumenz.txt因为只重定向了规范输入,所以out.txt文件只有规范输入> ls rumenz.txt 1.txt > out.log 1>&2ls: cannot access 1.txt: No such file or directoryrumenz.txt> cat out.log> out.log将规范输入重定向到文件,然而1>&2将规范输入重定向到了谬误输入,所以out.log外面什么也没有.> ls rumenz.txt 1.txt > out.txt 2>&1> cat out.txt ls: cannot access 1.txt: No such file or directoryrumenz.txt> out.log将规范输入重定向到文件,然而2>&1将谬误输入重定向到规范输入,所以out.log外面既有失常的输入也有谬误的输入./dev/null/dev/null:示意 的是一个黑洞,通常用于抛弃不须要的数据输入, 或者用于输出流的空文件> rm -f $(find / -name rumenz) &> /dev/null原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

August 1, 2021 · 1 min · jiezi

关于linux:Linux之free命令

free命令能够显示Linux零碎中闲暇的、已用的物理内存及swap内存,及被内核应用的buffer。在Linux系统监控的工具中,free命令是最常常应用的命令之一。命令格局free [参数] 命令性能free命令显示零碎应用和闲暇的内存状况,包含物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被疏忽.命令参数-b 以Byte为单位显示内存应用状况。-k 以KB为单位显示内存应用状况。-m 以MB为单位显示内存应用状况。-g 以GB为单位显示内存应用状况。-o 不显示缓冲区调节列。-s<距离秒数> 继续察看内存应用情况。-t 显示内存总和列。-V 显示版本信息。显示内存应用状况 输入简介Mem 行(第二行)是内存的应用状况。Swap 行(第三行)是替换空间的应用状况。total 列显示零碎总的可用物理内存和替换空间大小。used 列显示曾经被应用的物理内存和替换空间。free 列显示还有多少物理内存和替换空间可用应用。shared 列显示被共享应用的物理内存大小。buff/cache 列显示被 buffer 和 cache 应用的物理内存大小。available 列显示还能够被应用程序应用的物理内存大小。buffers和cached都是缓存,两者有什么区别先来提一个问题: buffer 和 cache 应该是两种类型的内存,然而 free 命令为什么会把它们放在一起呢?要答复这个问题须要咱们做些筹备工作。让咱们先来搞清楚 buffer 与 cache 的含意。 为了进步磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,减速文件路径名到inode的转换), 还采取了两种次要Cache形式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache无效缩短了 I/O零碎调用(比方read,write,getdents)的工夫。 buffer 在操作系统中指 buffer cache, 中文个别翻译为 "缓冲区"。要了解缓冲区,必须明确另外两个概念:"扇区" 和 "块"。扇区是设施的最小寻址单元,也叫 "硬扇区" 或 "设施块"。块是操作系统中文件系统的最小寻址单元,也叫 "文件块" 或 "I/O 块"。每个块蕴含一个或多个扇区,但大小不能超过一个页面,所以一个页能够包容一个或多个内存中的块。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应,它相当于是磁盘块在内存中的示意: 留神,buffer cache 只有块的概念而没有文件的概念,它只是把磁盘上的块间接搬到内存中而不关怀块中到底寄存的是什么格局的文件。 cache 在操作系统中指 page cache,中文个别翻译为 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它次要用来缩小对磁盘的 I/O 操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的拜访变为对物理内存的拜访。页高速缓存缓存的是内存页面。缓存中的页来自对一般文件、块设施文件(这个指的就是 buffer cache 呀)和内存映射文件的读写。 ...

July 31, 2021 · 1 min · jiezi

关于linux:常用-Linux-命令持续更新

最近用户登录信息:last -10最近执行命令:history 20

July 30, 2021 · 1 min · jiezi

关于linux:优麒麟-任务栏新版托盘协议SNI介绍

1、什么是任务栏新版托盘协定(SNI)在 Linux 操作系统中,“系统托盘区域”是在给定的 X 屏幕上运行的应用程序,能够显示正在运行的应用程序提供的小图标。系统托盘是一个 X 客户端,在给定的屏幕上领有一个非凡的管理器抉择并提供了容器窗口。Windows 将此性能称为“告诉区域”,旧版托盘协定就是通过 X 服务间接获取利用信息,在开发上难度很大。 新版托盘标准定义了可视项的治理,通常是用于向用户报告应用程序状态或提供对该应用程序执行的常见操作的快速访问的图标。它旨在作为 Freedesktop 的桌面告诉标准的补充但不间接相干,旨在代替 Freedesktop 系统托盘标准,更加面向模型视图,为工作区提供更多自在,如何以图形形式示意与它的视觉格调语言,这种形式(SNI)是将 systemtray 的调用封装进 dbus 总线中,晋升了开发者的开发效率。 从用户角度来看新版托盘协定(SNI)从外表上看不出有什么太大的变动,在开发的角度上是将最上层的利用与上层根底库的拆散。 2、实现形式新版托盘协定次要是通过三个库来实现的: dbusmenu 是实现应用程序和面板(#5)之间传输协定的库。dbusmenu 曾经被用于开发会话菜单,并且也是在 Lucid 中实现一些新零碎菜单的构建块。 indicator-applet 是将托管应用程序指示器区域的面板小程序。指示器小程序是作为音讯菜单项目标一部分开发的,旨在成为面板指示器的通用容器 。libappindicator 是一个新的库,用于帮忙应用程序端更改;它的确注册了图标和菜单,并在外部应用 dbusmenu 通过 dbus 公布上下文菜单。尽管它是 Gnome 桌面的新库,但它基于在 KDE 我的项目中设计的用于更新系统托盘协定的协定(下面的“信令协定”局部)。libappindicator 采纳并扩大了该协定,并将其与 dbusmenu 连贯以提供应用程序迁徙其代码所需的全套服务 。 3、SNI 工作流程3.1 托盘利用托盘封装 通过 dbusmenu,indicator-applet,libappindicator 将托盘利用的属性,办法,以及信号注册到 dbus 总线上,在任务栏上进行 dbus 监听解析来实现与托盘利用交互。 注册 item 的办法有: 属性有: 信号有: 3.2 注册 dbus 服务当拿到了托盘利用的信息而后就须要对信息进行封装通过 dbus 的形式发送给任务栏,在任务栏上会注册一个 statusnotifierWatcher 的服务用来检测托盘信息的,每当托盘利用关上的时候都会调用 statusnotifierWatcher 的 RegisterStatusNotifierItem 办法在任务栏的托盘区域进行按钮的注册,当托盘利用敞开的时候会调用任务栏 unRegisterStatusNotifierItem 办法来勾销在任务栏上的注册。3.3 调用 dbus 的办法当用户对托盘利用进行操作的时候,会调用相应 dbus 办法,并激活相干事件。例如左键点击会触发“激活窗口”的事件,右键单击会触发“显示右键菜单”的事件,悬浮会触发“显示提醒语”的事件。 ...

July 29, 2021 · 1 min · jiezi

关于linux:Linux之killall命令

Linux零碎中的killall命令用于杀死指定名字的过程(kill processes by name)。咱们能够应用kill命令杀死指定过程PID的过程,如果要找到咱们须要杀死的过程,咱们还须要在之前应用ps等命令再配合grep来查找过程,而killall把这两个过程合二为一,是一个很好用的命令。Centos 装置killall命令> yum install -y psmiscUbuntu装置killall命令> apt-get install -y psmisc命令格局killall [参数] [过程名] 命令性能用来完结同名的的所有过程命令参数-Z 只杀死领有scontext 的过程-e 要求匹配过程名称-I 疏忽小写-g 杀死过程组而不是过程-i 交互模式,杀死过程前先询问用户-l 列出所有的已知信号名称-q 不输入正告信息-s 发送指定的信号-v 报告信号是否胜利发送-w 期待过程死亡--help 显示帮忙信息--version 显示版本显示杀死所有同名过程> killall java向指定过程发送信号后盾运行程序:vi &杀死 vi过程:killall -TERM vi或者killall -KILL vi> vi &[1] 18729> killall -TERM vi[1]+ Stopped vi> ps -ef | grep viroot 18729 9713 0 22:26 pts/1 00:00:00 viroot 18799 9713 0 22:26 pts/1 00:00:00 grep --color=auto vi> killall -KILL vi[1]+ Killed vi> ps -ef | grep viroot 18827 9713 0 22:26 pts/1 00:00:00 grep --color=auto viTERM信号将终止所有不能捕捉该信号的过程KILL信号将强制杀死过程把所有的登录后的shell给杀掉> w> killall -9 bash运行命令:killall -9 bash 后,所有bash都会被卡掉了,所以以后所有连贯失落了。须要从新连贯并登录。通过含糊匹配杀死所有过程服务器运行了rumenz1,rumenz2,rumenz3过程> killall -9 rumenz*强制杀死rumenz1,rumenz2,rumenz3过程终止某个用户所运行的过程> killall -u deploy咱们只想杀死运行工夫超过 6h 的过程那么能够应用-o选项,其中o代表older> killall -o 6h杀死进行工夫小于 5h 的过程> killall -y 5h-y 选项,其中y代表younger疏忽大小写完结过程killall 命令是大小写敏感的,所以咱们如果写错大小写,将无奈正确杀死过程> killall -I rumenz敞开命令执行回显默认状况下,killall 会通知你命令执行状况,然而,咱们如果不关怀它的执行后果,只想让它静默执行,只需加上-q选项即可,其中q示意quite。列出所有反对的信号> killall -lHUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERMSTKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYSUNUSED交互式操作如果你在杀死多个过程时不太释怀,放心把不该杀死的过程给杀死了,那么你能够应用-i选项> killall -i rumenz期待直到某个过程被终止当一个信号被发送至某个过程,如果你想确定该过程曾经被杀死了才返回执行后果,能够应用-w选项,其中w代表wait> killall -w rumenz原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

July 28, 2021 · 1 min · jiezi