Linux 终端获取本机公网 IP 的方法# 下方任意命令均可: $ wget -qO- https://ipecho.net/plain ; echo $ curl https://ipecho.net
我认为我最常用的命令是: Choices cd git ls ssh sudo 几周前我偶然发现了这个Reddit线程一个简短的Bash片段告诉我如何获得我最常用的终端命令的列表。
终端类型 串行终端,如/dev/ttys/# 物理终端,如/dev/console 虚拟终端,Ctrl+Alt+F【1-6】、Ctrl+Alt+F7启动图形界面(先启动图形功能#startx) ,如/...dev/tty/# 伪终端(模拟终端),远程连接,图形环境打开远程接口。...COMMAND 获取内部命令帮助 外置命令: # COMMAND --help 获取外部命令帮助 # man COMMAND 查看命令手册 # info COMMAND...用户命令 2.系统调用 3.库 调用 4.设备文件 5.文件格式 6.游戏 7.杂项 8.管理命令 Linux学习汇总一常用命令: # tty :显示当前终端对应的终端设备文件,即终端访问类型 # who...# which COMMAND:查看一个可执行程序的具体路径,即外部命令的位置 # help BuiltinCommand :查看内置命令帮助信息 # COMMAND --help :获取外部命令帮助
一个进程只能为它自己或子进程设置进程组ID号 会话期: 会话期(session)是一个或多个进程组的集合。...setsid()函数可以建立一个对话期: 如果,调用setsid的进程不是一个进程组的组长,此函数创建一个新的会话期。...(1)此进程变成该对话期的首进程 (2)此进程变成一个新进程组的组长进程。 (3)此进程没有控制终端,如果在调用setsid前,该进程有控制终端,那么与该终端的联系被解除。...方法是在第1点的基础上,调用setsid()使进程成为会话组长: setsid(); 说明:当进程是会话组长时setsid()调用失败。但第一点已经保证进程不是会话组长。...可以通过使进程不再成为会话组长来禁止进程重新打开控制终端: if(pid=fork()) exit(0);//结束第一子进程,第二子进程继续(第二子进程不再是会话组长) 关闭打开的文件描述符 进程从创建它的父进程那里继承了打开的文件描述符
Linux系统的大多数服务器就是通过守护进程实现的。...setsid()函数可以建立一个对话期: 如果,调用setsid的进程不是一个进程组的组长,此函数创建一个新的会话期。...,变成守护进程后其他打开的文件描述符就没什么用了。...(守护进程并不是一个特别的东西);create_daemon函数要素(当一个进程只要调用create_daemon函数,就会使被调用的函数成为一个守护进程) #include #...// 先要获取当前系统中所允许打开的最大文件描述符数目 int cnt = sysconf(_SC_OPEN_MAX); int i = 0; for (i=0; i<cnt; i
在工作中经常使用Xmanager来登录远端的Linux系统,在X窗口系统上作图形化的操作。Xmanager可以将PC变成X Windows工作站(非开源)。...就像运行在PC上的任何Windows应用程序一样,它可以无缝拼接到Linux应用程序中。在Linux/UNIX和Windows网络环境中,Xmanager 是最好的连通解决方案。 2....可以在本地PC上同时运行Linux/UNIX和Windows图形应用程序。 Xshell Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件。...它使得用户能轻松和安全地从Windows PC上访问Linux/UNIX主机。 Xftp Xftp是一个用于MS Windows平台的强大的FTP和SFTP文件传输程序。...获取产品秘钥 点开\Xmanager\Crack文件夹下有个keygen.exe软件, 点击生成秘钥 复制到xmanager安装页面中 4. 我这选择的是典型 5.
,一切皆文件(Everything is File),磁盘、网络数据、终端,甚至进程间通信工具管道pipe等都被当成文件对待。...当打开文件时内核会返回给我们一个文件描述符,当进行文件操作时我们需要把该描述符告诉内核,内核获取到这个数字后就能找到该数字所对应文件的一切信息并完成文件操作。...述符,当其中有可以进行读写操作的文件描述符时你再返回”; (3)该函数返回后我们即可获取到具备读写条件的文件描述,符并对其进行相应的处理。...)会因调用select而阻塞暂停运行,当任何一个被监听文件描述符出现,如可读或可写事件时,就唤醒相应的进程(线程),但这里的问题是当进程被唤醒后程序员并不知道到底是哪个文件描述符可读或可写,因此要想知道哪些文件描述符已经就绪就必须从头到尾再检查一遍...,这样进程 (线程)被唤醒后可以直接获取就绪文件描述符而不需要从头到尾把所有文件描述符都遍历一边,非常高效。
⚫ 与控制终端脱离。在 Linux 中,系统与用户交互的界面称为终端,每一个从终端开始运行的进程都会依附于这个终端,这是上一小节给大家介绍的控制终端,也就是会话的控制终端。...当控制终端被关闭的时候,该会话就会退出,由控制终端运行的所有进程都会被终止,这使得普通进程都是和运行该进程的终端相绑定的;但守护进程能突破这种限制,它脱离终端并且在后台运行,脱离终端的目的是为了避免进程在运行的过程中的信息在终端显示并且进程也不会被任何终端所产生的信息所打断...在调用 fork 函数时,子进程继承了父进程的会话、进程组、控制终端等,虽然父进程退出了,但原先的会话期、进程组、控制终端等并没有改变,因此,那还不是真正意义上使两者独立开来。...关闭不再需要的文件描述符。...,这使得守护进程不再持有从其父进程继承过来的任何文件描述符。
而在Linux中,STDIN_FILENO和STDOUT_FILENO是用于表示标准输入和标准输出的文件描述符。...STDIN_FILENO STDIN_FILENO是一个常量,表示标准输入的文件描述符。 在大多数情况下,标准输入指向终端设备(通常是键盘),用于从用户获取输入数据。...当程序需要从标准输入中读取数据时,可以使用 STDIN_FILENO 来代表标准输入的文件描述符。...当程序需要将数据输出到标准输出时,可以使用 STDOUT_FILENO 来代表标准输出的文件描述符。...这在一些特定的场景中非常有用,比如在系统调用或低级 I/O 操作中需要直接操作文件描述符时。 拓展:嵌入式Linux:格式化I/O
setsid()实现了以下效果: (a) 成为新对话期的首进程 (b) 成为一个新进程组的首进程 (c) 没有控制终端。...4、关闭打开的文件描述符 进程从创建它的父进程那里继承了打开的文件描述符。如不关闭,将会浪费系统资源,造成进程所在地文件系统无法卸下以及无法预料的错误。...一般来说, 必要的是关闭0、1、2三个文件描述符,即标准输入、标准输出、标准错误。因为我们一般希望守护进程自己有一套信息输出、输入的体系,而不是把所有的东西 都发送到终端屏幕上。...8、记录信息 在Linux/Unix下有个syslogd的守护进程,向用户提供了syslog()系统调用。任何程序都可以通过syslog记录事件。 ...signal(SIGCHLD,SIG_IGN); //守护进程不属于任何终端,所以当需要输出某些信息时,它无法像一般程序那样将信息直接输出到终端,可以使用linux中自带的syslogd守护进程
程序可以通过读取这些文件来获取来自键盘的输入数据。 显示器:显示器也是通过设备文件进行操作的。例如,/dev/tty或/dev/console文件可以用来向终端显示内容。...程序通过读取标准输入设备文件(如/dev/tty)来获取用户的输入数据。...文件描述符: 在Linux中,标准输入(stdin)、标准输出(stdout)和标准错误(stderr)分别对应文件描述符0、1和2。...echo 与 > echo 命令是一个非常常见和基本的 Linux/Unix 命令,它用于在终端或控制台上输出文本或变量的值。...文件描述符 在Linux中,除了标准输入(0)、标准输出(1)和标准错误(2)之外,你还可以使用其他文件描述符进行重定向。你可以自定义文件描述符进行高级操作。
找到导致磁盘满的程序 当发现磁盘占用比较多的时候,可以通过下面的命令,查看各个挂载路径的占用情况: $ df -h udev 3.9G 0 3.9G 0% /dev...不完善的daemon实现 通常在终端启动一个程序后,文件描述符0,1,2通常对应标准输入,标准输出,标准错误。从前面的例子中也能窥见一二,它打开的是/dev/pts/1,其实就是当前终端。...) { perror("change dir failed"); return -1; } struct rlimit rl; /*先获取文件描述符最大值...--《linux下这些特殊的文件》 查找被删除但仍有进程占用的文件 编写daemon程序注意事项 关注公众号【编程珠玑】,获取更多Linux/C/C++/数据结构与算法/计算机基础/工具等原创技术文章...后台免费获取经典电子书和视频资源
linux 文件操作(打开及关闭) Linux文件描述符简介 当一个进程获取文件的访问权时,通常指打开一个文件时,内核返回一个文件描述符,进程可以通过文件描述符进行后续的操作。...文件描述符是一组正整数,每一个文件被打开时,内核都会打开一个大于或等于0的文件描述符。 文件描述符 0 1 2 这是linux系统保留的三个文件描述符。...在linux中对文件的访问通常有两种形式: 一 通过文件名作为参数操作文件; 二 通过文件描述符操作文件; 关闭文件 在linux c中 #include int close(int...: 1 远程文件保存系统,远程主机关闭,导致文件保存失败; 2 当有程序正在对文件进行写,此时关闭文件; 打开文件 linux c 提供两种打开文件的方式: 1 int open(char *pathname...如果打开文件不存在,则创建文件; O_EXCL:这个参数同o_CREAT一起使用,如果文件存在,则open操作失败,使用这个命令,可以使open称为一个创建文件的命令; O_NOCITY:打开的文件不会成为控制终端
-e: 从shell获取一行输入,用户手动输入字符,直到达到行分隔符为止。 -i text: 当与-e结合使用并且仅在不使用-s的情况下,文本将作为输入行的初始文本插入,允许用户在输入行上编辑文本。...-s: 当read从终端获取输入时,不显示按键。...-u fd: 从文件描述符fd中读取而不是从标准输入中读取,文件描述符应该是一个small integer。...while read text do echo "$text" done 读取终端的输入,指定一个输入的超时时间。.../linux-comm-read.html https://linuxize.com/post/how-to-read-a-file-line-by-line-in-bash/
守护进程不依赖于终端 从终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终端。当控制终端被关闭时,相应的进程都会被自动关闭。...查看守护进程 ps axj a: 显示所有 x:显示没有控制终端的进程 j:显示与作业有关的信息(显示的列):会话期ID(SID),进程组ID(PGID),控制终端(TT),终端进程组ID(TRGID)...若该进程和任何终端无关,其值为-1。通过比较他们来判断一个进程是属于前台进程组,还是后台进程组。 进程组、对话期和控制终端关系 每个会话有且只有一个前台进程组,但会有0个或者多个后台进程组。...关闭文件描述符 复制代码 1.创建子进程,父进程退出 由于守护进程是脱离控制终端的,因此,完成第一步后就会在shell终端里造成一程序已经运行完毕的假象。...由于在调用fork()函数时,子进程全盘复制了父进程的会话期、进程组和控制终端等,虽然父进程退出了,但原先的会话期、进程组和控制终端等并没有改变,因此,还不是真正意义上的独立。
前言 Linux将所有内核对象当做文件来处理,系统用一个size_t类型来表示一个文件对象,比如对于文件描述符0就表示系统的标准输入设备STDIN,通常情况下STDIN的值为键盘,如read命令就默认从...号描述符, 进程会往其中写入错误信息; 这三个描述符默认是对应同一个 tty 设备, 这样我们便可以在终端中输入数据和获取进程的输出....默认的文件描述符也是可以被替换的, 例如我们可以替换掉 stdout 到一个文件, 这样命令的输出就不是打印到终端, 而是被输出到文件中: ?...当 Right 为文件名时, Operation 和 Right 可以有空格, 否则也不能有空格; 当存在多个文件描述符的操作时, 会按照从左往右的顺序依次执行....我们通过下面的例子来验证上面的文件描述符交换是否生效: 首先把默认的 stderr 重定向到文件 /tmp/stderr 中, 这样在终端中就不会看到错误输出了; 当交换完 stderr 和 stdout
只不过出于谨慎考虑,防止进程再次打开一个控制终端。因为子进程现在是会话组长了(对话期的首次进程),有能力打开控制终端,再fork一次,孙子进程就不能打开控制终端了。...文件描述符 Linux是“一切皆文件”,文件描述符是内核为已打开的文件所创建的索引,通常是非负整数。进程通过文件描述符执行IO操作。...每个进程有自己的文件描述符表,因此相同的描述符可能指向同一个文件,也可能指向不同文件;来自不同进程的不同的描述符,当然也有可能指向同一个文件。...umask权限掩码 我们知道,在Linux中,任何一个文件都有读(read)、写(write)和执行(execute)的三种使用权限。其中,读的权限用数字4代表,写权限是2,执行权限是1。...它与守护进程是不同的: 1、守护进程与终端无关,是被init进程收养的孤儿进程;而后台进程的父进程是终端,仍然可以在终端打印 2、守护进程在关闭终端时依然坚挺;而后台进程会随用户退出而停止,除非加上nohup
创建步骤 创建子进程,终止父进程 由于守护进程是脱离控制终端的,因此首先创建子进程,终止父进程,使得程序在 shell 终端里造成一个已经运行完毕的假象。...之后所有的工作都在子进程中完成,而用户在 shell 终端里则可以执行其他的命令,从而使得程序以僵尸进程形式运行,在形式 I 上做到了与控制终端的脱离。...在调用 fork 函数时,子进程全盘拷贝父进程的会话期 (session,是一个或多个进程组的集合)、进程组、控制终端等,虽然父进程退出了,但原先的会话期、进程组、控制终端等并没有改变,因此,那还不是真正意义上使两者独立开来...直接上代码 注:运行环境是 linux 系统,并且要在 cli 模式下运行。 文件名:deamon.php <?...PHP_EOL, FILE_APPEND); sleep(5); } } /** * 获取守护进程的id * @return
ttyname函数可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端设备而不能是任意文件。在linux上的命令tty 也可以查看到当前的终端。...四、创建守护进程步骤 调用fork(),创建新进程,它会是将来的守护进程 在父进程中调用exit,保证子进程不是进程组组长 调用setsid创建新的会话期 将当前目录改为根目录 将标准输入、标准输出... exit(EXIT_SUCCESS); /* 调用setsid的进程不能为进程组组长,故fork之后将父进程退出 */ setsid(); // 子进程调用后生成一个新的会话期.../daemon simba@ubuntu:~/Documents/code/linux_programming/APUE/process$ ps axj PPID PID PGID SID.../daemon 可以看出守护进程的ID也是进程组的ID,也是会话期的ID,此外这个会话期没有前台进程组。
、桌面系统启动的终端 3、虚拟终端:Linux内核自带的,ctrl+alt+f6可以打开7个虚拟终端 守护进程 会话用来管理前后台进程组,会话一般关联着一个终端当终端被关闭了之后,会话中的所有进程都会被关掉...函数 4.重设文件权限掩码 新建文件的权限受文件权限掩码影响 022:只写 新建文件默认执行权限:666 真正的文件执行权限:666&(~umask) 方法:通过umask 5.关闭不需要的文件描述符...> 0) { exit(0); // 父进程直接退出 } // 执行到这里就是子进程 // setsid将当前进程设置为一个新的会话期session...// 将当前进程工作目录设置为根目录 chdir("/"); // umask设置为0确保将来进程有最大的文件操作权限 umask(0); // 关闭所有文件描述符...// 先要获取当前系统中所允许打开的最大文件描述符数目 int cnt = sysconf(_SC_OPEN_MAX); int i = 0; for (i=0; i<
领取专属 10元无门槛券
手把手带您无忧上云