
linux学习专栏
文章平均质量分 85
日常工作中常用的linux命令,线上问题分析排查脚本
前网易架构师-高司机
2014年优快云博客之星TOP10;资深游戏服务器架构师;曾在IBM的Platform Computing,淘米网,网易搬砖;开发团队上线了多个国内外爆款游戏+人工智能相关的边缘计算软硬件产品;欢迎+V gao_ke104 探讨咨询服务器架构设计,游戏运营,人工智能等领域的问题。
展开
-
linux常用解压和压缩文件的命令
linux常用解压和压缩文件的命令 .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzi原创 2011-07-14 22:47:11 · 2946 阅读 · 0 评论 -
使用Linux auto Makefile自动生成的运行步骤
首先创建一个 Linux Makefile.am.这一步是创建Linux Makefile很重要的一步,automake要用的脚本配置文件是Linux Makefile.am,用户需要自己创建相应的文件。之后,automake工具转换成Linux Makefile.in。AD:原创 2011-07-14 22:45:26 · 1358 阅读 · 2 评论 -
开发和运维人员必须掌握的linux常用命令
在主机之间同步文件和目录 — rsync -avz /path/to/source user@example.com:/path/to/destination。— 将不安全的连接封装在 SSL/TLS 中 — stunnel -c -d 127.0.0.1:8080 -r example.com:80"— 自动执行 SQL 注入攻击 — sqlmap -u “http://example.com/page.php?原创 2024-03-20 01:30:00 · 1480 阅读 · 0 评论 -
linux常用命令指南
Linux命令通常由一个命令名称和一些选项或参数组成,并且可以通过命令行界面(CLI)或脚本文件执行。一些常见的Linux命令包括ls(列出文件和目录)、cd(切换目录)、mkdir(创建目录)、cp(复制文件)、rm(删除文件)等。总之,掌握这些基本的 Linux命令对于任何在类 Unix 环境中工作的人来说都是至关重要的。不要害怕尝试和探索。花时间了解与每个命令相关的选项和参数,很快就会发现自己可以轻松地导航和操作 Unix 系统。Unix 系统提供了大量的命令,每个命令都有其独特的功能。原创 2024-03-19 11:32:30 · 1972 阅读 · 0 评论 -
UNIX(进程间通信):01---Linux进程通信方式
Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布...原创 2021-01-28 08:20:00 · 586 阅读 · 2 评论 -
创建与打开IPC通道的POSIX和SYSTEM V方法
先说POSIX的吧:mq_open,sem_open,shm_open着三个函数用于创建或者打开一个IPC通道。 由此可见,消息队列的读写权限是任意的,然而信号灯就没有,实际上,信号灯都需要读和写权限罢了。共享内存不能只以只写方式打开,否则不能往共享内存中写数据的。在创建一个新的消息队列或者信号灯或者共享内存的时候,可能需要mode_t权限标志:S_IRUSER原创 2012-09-12 10:21:29 · 3743 阅读 · 0 评论 -
POSIX和SYSTEM的消息队列应该注意的问题
首先看看POSIX的代码:1.posix_mq_server.c#include #include #include #include #define MQ_FILE "/mq_test"#define BUF_LEN 128int main(){ mqd_t mqd; char buf[BUF_LEN]; int por =原创 2012-09-12 15:59:38 · 10225 阅读 · 0 评论 -
多进程鱼多线程的权衡选择
最近有好多人在网上问道做游戏开发框架用多线程还是多进程呢,或者两者之间的优缺点,等等类似的问题。下边小高就带您小小分析一下:1、首先要明确进程和线程的含义:进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。进程是程序在某个数据集上的执行,原创 2012-10-18 14:11:54 · 6101 阅读 · 0 评论 -
消息队列接口API(posix 接口和 system v接口)
消息队列 posix API消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。信号这种通信方式更像\"即时\"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(process-persistent);管道及有名管道则是典型的随进程持续IPC,并且,只能传送无格式的字节流无疑转载 2012-09-12 15:28:11 · 6076 阅读 · 0 评论 -
UNIX(进程间通信):03---僵尸进程
僵尸进程僵尸进程是指一个已经终止、但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为“僵尸进程”(zombie)。怎样产生僵尸进程一个进程在调用exi...原创 2021-02-01 07:50:48 · 354 阅读 · 2 评论 -
key_t IPC键和ftok函数详解和剖析
统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -1 被原创 2012-09-12 10:56:22 · 10547 阅读 · 0 评论 -
LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
dlopen基本定义 功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述: 在dlopen的()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。 m转载 2012-11-14 15:28:50 · 1442 阅读 · 0 评论 -
UNIX(进程间通信):02---父子进程之间的数据共享分析
之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享。接下来我们就来分析分析父子进程是否存在...原创 2021-01-29 08:20:00 · 815 阅读 · 1 评论 -
ubuntu的apache配置https
一、配置Apache1、开启SSL模块a2enmod ssl2、启用SSL站点a2ensite default-ssl3、加入监听端口vi /etc/apache2/ports.conf #编辑Apache端口配置,加入443端口Listen 443注:Ubuntu启用SSL站点后,缺省已经加入了( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到ce...原创 2018-04-20 09:44:14 · 553 阅读 · 0 评论 -
如何禁止掉root登录,使用key密钥登录
在Linux系统下执行命令:ssh-keygen -t rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysvim /etc/ssh/sshd_configAuthorizedKeysFile .ssh/authorized_keysRSAAuthentication yesPubkeyAuthentication yesPasswordAuthentication noservice sshd r...原创 2020-07-27 17:07:34 · 394 阅读 · 0 评论 -
screen命令使用说明
有些程序写的很操蛋,比如放到后台执行,但后边还需要再切回前台来重新执行,这个时候我们选择screen工具:screen -d -m -S LoginServer[6001] ./run_login_server.sh具体的screen命令包含哪些参数,可以参考screen --help我们选择跟踪哪个screen的会话,使用screen -list比如我们要使用7794这个会话,screen -r 7794使用完毕后切回到后台,Ctr+a 按下后再按下d。...原创 2020-05-26 18:10:59 · 1779 阅读 · 0 评论 -
Shell脚本自动监控docker容器的状态
首先我们来写一个脚本root@server:~# cat docker_monitor.sh#!/bin/bash#监控容器的运行状态#容器名称 传入参数containerName=$1#当前时间now=`date +"%Y-%m-%d %H:%M:%S"`# 查看进程是否存在exist=`docker inspect --format '{{.State.Runni...原创 2020-04-01 15:41:06 · 3940 阅读 · 0 评论 -
关于valgrind的安装和内存泄露分析
程序的安装如果使用的是tar包安装. valgrind# wget http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2# tar -jxvf valgrind-3.9.0.tar.bz2# cd valgrind-3.9.0# ./autogen.sh# ./configure# make; make install原创 2015-01-08 11:43:41 · 8076 阅读 · 0 评论 -
valgrind工具使用详解
zz自 http://blog.youkuaiyun.com/destina/article/details/6198443 感谢作者的分享!一 valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它转载 2015-01-08 11:33:45 · 7781 阅读 · 0 评论 -
关于NFS服务器的原理总结和mount挂载
nfs服务器的原理 以及如何mount挂载一个目录原创 2015-01-26 16:54:57 · 15815 阅读 · 0 评论 -
setsockopt()用法(参数详细说明)
先来看看函数的原型:int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);然后我们来看看参数:s(套接字): 指向一个打开的套接口描述字level:(级别): 指定选项代码的类型。SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPP原创 2013-12-10 11:34:18 · 14540 阅读 · 0 评论 -
关于linux的进程中的各个线程cpu占用情况的分析和查看
我们经常会在新开的服搭建一个游戏的服务器,有时候要进行压力测试,那么如何来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们也许会通过pstack命令查看里边的各个线程id以及对应的线程现在正在做什么事情,分析多组数据就可以获得哪些线程里有慢操作影响了服务器的性能,从而得到解决方案。比如这样的以组数据:[root@AY13081614454212原创 2014-11-18 19:36:41 · 28654 阅读 · 0 评论 -
Linux内核OOM机制的详细分析
Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。典型的情况是:某天一台机器突然ssh远程登录不了,但能ping通,说明不是网络的故障,原因是sshd进程被OOM killer杀掉了(多次遇到这样的假死状况)。重启机器后查看系统日志/var/log/mes转载 2014-06-18 11:25:15 · 6355 阅读 · 0 评论 -
map类的erase方法的在Linux与Windows中的差异
这次的代码是跨平台的,尼玛在win32上通过,但是在linux上不通过了,查找了一下原来是平台linux不支持。1 #include 2 #include 3 #include 4 5 using namespace std;6 7 int main(int argc, char* argv[])8 {9 map MyMap;10 11原创 2014-01-20 17:29:52 · 8162 阅读 · 0 评论 -
Jmeter测试并发https请求成功了
首先要安装jmeter2.4版本的,而且不建议大家使用badboy,因为这存在兼容性问题。对于安装,我就不讲了,我就说说如何测试https,想必大家都在网上找相关资料找疯了,我几乎也是呀。 有这么一个网页, http://jmeter.51原创 2011-08-10 14:31:17 · 43505 阅读 · 2 评论 -
pthread_attr_init线程属性
1.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。 1.名称::pthread_attr_init/pthread_attr_destroy转载 2011-08-26 10:41:04 · 41063 阅读 · 8 评论 -
关于遍历linux的文件目录的坑- readdir
去年给公司写了一个配置服务器,目的是解决运维的工作量太大,而且传送服务器需要的配置文件需要脚本传送到各个服(每个服ip不一样,需要scp),然后再刷新通知各个GameServer,中间有没有传送失败并不得知,而且维护相当麻烦,所以我写了这个服务器,所有区服的配置都在这里边,不同的区服通过编号创建不同的目录,在对应目录下放服务器的配置,架构我就不说了,有兴趣的可以私聊。运行了很久了,突然遇到一个原创 2015-08-20 12:21:29 · 10226 阅读 · 0 评论 -
Linux查看CPU和内存使用情况
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。top命令是Linux下常用的性能分析转载 2015-08-18 20:46:14 · 982 阅读 · 0 评论 -
epoll的再次认识
使用mmap加速内核与用户空间的消息传递。这 点实际上涉及到epoll的具体实现了。无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很 重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。而如果你想我一样从2.5内核就关注epoll的话,一定不会忘记手工 mmap这一步的。顺便看一下 EPOLLET 和 E原创 2015-04-20 17:10:44 · 1193 阅读 · 0 评论 -
加速scp传输速度
当需要在机器之间传输400GB文件的时候,你就会非常在意传输的速度了。默认情况下(约125MB带宽,网络延迟17ms,Intel E5-2430,本文后续讨论默认是指该环境),scp的速度约为40MB,传输400GB则需要170分钟,约3小时,如果可以加速,则可以大大节约工程师的时间,让攻城师们有更多时间去看个电影,陪陪家人。目录1. 结论2. 测试数据:加密算法和压缩的影响3.转载 2015-03-13 16:26:06 · 18065 阅读 · 0 评论 -
scp免密码远程拷贝
有些时候,我们在复制/移动文件 到另一台机器时会用到scp,因为它比较安全。但如果每次都要输入密码,就比较烦了,尤其是在script里。不过,ssh有另一种用密钥对来验证的方式。下面写出我生成密匙对的过程,供大家参考。第一步:生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"[user1@rh user1]$ ssh-keygen -t转载 2015-03-10 17:13:33 · 2684 阅读 · 0 评论 -
在GCC和Visual Studio中使用hash_map
熟悉STL或熟悉ACM/ICPC的话,其中的set, map, multiset, multimap一定用过无数次了,它们都是用平衡二叉树(红黑树)实现的,复杂度为O(lgn)。我们也知道set, map可以通过哈希来实现,复杂度只有O(1),可惜直到现在,unsorted_set或hash_map都没能成为C++标准的一部分(C++0x,- -b)。不过无论在GNU GCC中还是Microsof转载 2016-02-18 11:15:48 · 2476 阅读 · 0 评论 -
mpiBlast安装详解以及使用说明
Getting mpiblast 现在下载包文件: wget http://www.mpiblast.org/downloads/files/mpiBLAST-1.6.0-pio.tgz 解压包文件: tar xvzf mpiBLAST*.tgz 然后下载原创 2011-09-07 15:57:15 · 3687 阅读 · 0 评论 -
python源代码现成重用大全
Nullege is a search engine for Python source code.http://nullege.com/原创 2011-09-01 18:58:09 · 1429 阅读 · 0 评论 -
Python的Pexpect详解 [图片]
使用原始 original_prompt 来找到 login 后的提示符(这里默认 original_prompt 是“$”或“#”,但是有时候可能也是别的 prompt,这时就需要在 login 时手动指定这个特殊的 prompt,见上例,有可能是“ > ”),如果找到了,立马使用更容易匹配的字符串来重置该原始提示符(这是由 pxssh 自己自动做的,通过命令 "PS1='[PEXPECT]\$ '" 重置原始提示符,然后每次 expect 匹配 \[PEXPECT\][\$\#])。原创 2023-09-14 11:22:47 · 56159 阅读 · 1 评论 -
fcntl函数详解
功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd转载 2012-09-13 14:06:02 · 27518 阅读 · 2 评论 -
使用nohup让程序永远后台运行
使用nohup让程序永远后台运行Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:/usr/local/mysql/bin/mysqld_safe --user=mysql &但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如转载 2012-09-14 01:25:35 · 5835 阅读 · 0 评论 -
如何正确编写linux守护进程
1、守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。2、创建守护进程步骤1)创建子进程,父进程退出 之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行原创 2012-11-12 09:21:22 · 6195 阅读 · 1 评论 -
online游戏服务器架构--网络架构
启动:父进程启动;子进程启动;网络架构。每个父进程携带N个子进程,子进程负责处理业务逻辑和其它数据,而父进程只是将客户端的请求路由到各个子进程,路由的策略非常简单,父进程将请求包按照轮流的法则分发到这N个子进程。子进程接收到请求包的时候,它便开始处理,处理完后再将结果反还给父进程。注意,子进程并不处理网络连接,它并不知道请求包的源的信息,它只处理业务,相反地,父进程并不知道请求包的内容,它转载 2012-11-24 00:14:47 · 6276 阅读 · 0 评论 -
online游戏服务器架构—用户登录数据组织 .
sprite_t类型的数据结构是核心数据结构,每一个登录用户对应一个,它的初始化在用户登录的时候,此后一直到用户退出或者离线一直保存在系统内存当中,在此过程中该sprite_t数据结构被保存在两个哈希表当中,一个是以用户的id为索引,这个是逻辑相关的,另一个是以此连接的套结字描述符为索引,这个是逻辑无关的:int parse_protocol(uint8_t *data, int rcvlen转载 2012-11-24 00:33:12 · 6196 阅读 · 0 评论