Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。...Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。linux中.sh文件是什么?linux中.sh文件是脚本文件,一般都是bash脚本。...想运行的话就用sh命令运行sh xxx.sh。注:sh或是执行脚本,或是切换到sh这个bash里,默认的shell是bash。...当然,linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。...还有就是在执行脚本的时候是用sh + 脚本名的方式来执行,其实,大部分的时候,简单脚本只要权限设置正确,可以直接执行,不需要sh命令的。
/加上文件名.sh,如运行hello.sh为..../hello.sh【hello.sh必须有x权限】 二、直接sh 加上文件名.sh,如运行hello.sh为sh hello.sh【hello.sh可以没有x权限】 方法一:绝对路径执行.sh文件.../home/test/shell/hello.sh /home/test/shell/hello.sh sh /home/test/shell/hello.sh 方法二:当前目录执行.sh文件 1、cd...到.sh文件所在目录 比如以hello.sh文件为例,如下 2、给.sh文件添加x执行权限 比如以hello.sh文件为例,chmod u+x hello.sh,如下图 3、..../hello.sh 即可执行hello.sh文件,如下图 4、sh 执行.sh文件 以hello.sh文件为例,sh hello.sh即可执行hello.sh文件,如下图 注:用“./”加文件名.sh
/bin/sh或者#!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。.../filename 来运行(如:chmod +x 123.sh,./123.sh) 二、注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。...1,自动执行jar项目运行的脚本 a,创建脚本文件(test-a.sh) [root@docker_t tools]# touch test-a.sh b,编辑文件 [root@docker_t.../test-a.sh ?.../test-b.sh ?
那么本文,我们来学习进程等待,我们从三个方面来看,进程等待是什么?为什么要等待?等待是在做什么?从以上几个方面,相信同学对于Linux中的进程等待有更深层次的理解。...进程等待是什么 思考:什么情况下会发生等待的情况? 情况实例:父进程创建了子进程,父进程任务结束,子进程还没有结束,父进程需要等待子进程退出。这种情况就是等待。 那么不等待会引发的后果是什么呢?...进程等待都在做什么 前面两点,即便是没有学习过进程等待的都应该知道有那么回事,今天的重点实际上是在等待子进程的时候父进程是在做什么。...不完全是的,父进程等待的时候分为两种等待,一种是阻塞等待,一种是非阻塞等待,对于阻塞等待,就像scanf,输入数据之后,需要等待键盘数据就绪,这是一种阻塞,而子进程本质也是软件,父进程实际上就是等待该软件就绪...至于等待的三种情况,等待成功,pid_t返回的值是大于0,==0代表的是等待成功,但是子进程正准备结束了,< 0代表的是等待失败。
前言:接着前面进程终止,话不多说我们进入Linux进程等待的学习,如果你还不了解进程终止建议先了解: Linux进程终止 本篇主要内容: 什么是进程等待 为什么要进行进程等待 如何进程等待...进程等待的概念 首先在开始之前我们提个问题,到底什么是进程等待?...进程等待的概念: 我们通常说的进程等待其实是通过wait/waitpid的方式,让父进程(一般)对子进程进行资源回收的等待过程,父进程必须等待这个子进程结束后,处理它的代码和数据! 2....进程等待必要性 在了解完进程等待的概念后,新的问题出现了,我们为什么要进行进程等待,进程等待的必要性是什么?...进程等待的方法 3.1 wait方法 我们可以通过系统调用来等待进程:wait函数 wait等待任意一个子进程的退出,如果等待成功他将返回子进程的pid,失败则返回-1 我们就用一段代码来看看wait:
最近做了一点和Linux有关的工作,刚刚学习,做一点和shell脚本有关的笔记。...1、创建test.sh文件 touch test.sh 2、编辑sh文件 vi test.sh 3、保存退出 敲击esc, 然后输入 :wq ,回车退出 4、添加可执行权限,当然默认就是可执行的。...chmod +x test.sh 5、运行文件 (1)./test.sh (2)sh test.sh 6、删除文件 rm test.sh
shell中使用source xxx.sh ,是直接运行xxx.sh的命令,不创建子shell,而sh则创建子shell,子shell里面 的变量父shell无法使用,对环境变量的修改也不影响父shell...sh 创建了子shell和当前的shell并行执行,子shell中执行,脚本设置的变量不会影响当前shell。...sh执行脚本 source执行脚本 还有个办法可以在父shell和子shell中分别加上 echo $SHLVL ,显示当前运行层级,可以明显的看出来: 两种执行层级不同 [root@bogon home...]# cat father.sh #!..."source son shell" echo "sh son shell" sh son.sh echo "sh son shell" [root@bogon home]# cat son.sh #
,而 task_list 字段用于保存等待资源的进程列表。...向等待队列添加等待进程 要向 waitqueue 添加等待进程,首先要声明一个 wait_queue_t 结构的变量,wait_queue_t 结构定义如下: typedef int (*wait_queue_func_t...task_list: 用于连接其他等待资源的进程。...唤醒等待队列 当资源准备好后,就可以唤醒等待队列中的进程,可以通过 wake_up() 函数来唤醒等待队列中的进程。...--nr_exclusive) break; } } 可以看出,唤醒等待队列就是变量等待队列的等待进程,然后调用唤醒函数来唤醒它们。
三、进程等待 3.1、进程等待的必要性 1、之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。...4、父进程通过进程等待(wait)的方式,回收子进程资源,获取子进程退出信息 3.2、进程等待的方法 3.2.1、wait方法 wait方法里的参数为输出型参数,可以设置为NULL。...调用wait函数父进程默认进行阻塞等待,会等待任意一个子进程退出。等待成功,wait会返回子进程的pid,等待失败返回小于0的值。 ...int变量的地址,可以查看子进程的退出码), options参数设置为0表示阻塞等待,设置为宏 WNOHANG表示非阻塞等待。...阻塞等待时父进程会阻塞在waitpid这里一直等待子进程返回,非阻塞等待采用轮询的方法查看子进程的退出信息,在轮询的间隙父进程可以继续做别的工作。
一、linux中.sh文件是什么? linux中.sh文件是脚本文件,一般都是bash脚本。 二、linux中的.sh文件怎么执行? 1、直接..../加上文件名.sh,如运行hello.sh为 ..../hello.sh 【绝对路径下也可以,但hello.sh必须有x权限】 使用绝对路径执行: 对于文件是否具有x权限,可以目录文件夹下(存放当前文件的文件夹)输入 ll...命令查看,没有可使用 chmod u+x hello.sh 2、直接sh 加上文件名.sh,如运行hello.sh为 sh hello.sh【hello.sh可以没有x权限】 版权声明:本文内容由互联网用户自发贡献
---- 前言 进程 创建后,需要对其进行合理管理,光靠 OS 是无法满足我们的需求的,此时可以运用 进程 控制相关知识,对 进程 进行手动管理,如创建 进程、终止 进制、等待 进程 等,其中等待 进程...写时拷贝不止可以发生在常规栈区、堆区,还能发生在只读的数据段和数据段 写时拷贝后,生成的是副本,不会对原数据造成影响 ---- 2、进程终止 假设某个进程陷入了死循环状态,可以通过特定方法终止此程序,如在命令行中莫名其妙输入了一个指令...,确保子进程不会连累 OS,而子进程执行的结果是否正确,需要我们自行判断 3.2、等待函数 系统提供的父进程等待函数有两个 wait() 和 waitpid(),后者比较常用 #include 0 的值 等待失败时,返回 -1 等待中,返回 0 参数列表: pid 表示所等子进程的 PID status 表示状态,为整型,其中高 16 位不管,低 16 位中,次低 8 位表示退出码,...---- 总结 以上就是关于 Linux进程控制(创建、终止、等待) 的相关知识了,我们学习了 子进程 是如何被创建的,创建后又是如何终止的,以及 子进程 终止 父进程 需要做些什么,有了这些知识后,
环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【Linux】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念...【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学习Ⅲ-环境变量 【Linux】进程理解与学习Ⅳ-进程地址空间 浅谈Linux下的shell--BASH 【Linux】进程优先级...我们在Linux下可以通过echo $?指令查看最近的进程的退出码。 ...阻塞式等待 将waitpid的第三个参数设置为0,就表示阻塞式等待。...我们可以通过等待轮询的方式,来保证在等待子进程的同时,父进程得以做一些其他的事。
知识分享之Golang——实现命令行等待输入功能 背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。...知识分享系列目前包含Java、Golang、Linux、Docker等等。...开发环境 系统:windows10 语言:Golang golang版本:1.17 内容 当我们使用golang编写一个执行程序时不免需要用户在命令行输入一些命令,我们可以根据这些命令进行动态化处理下一步程序的执行方向...bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Println("请输入你想要输入的内容...= nil { panic(fmt.Errorf("发生致命错误: %w \n", err)) } //TODO 下面我们就可以根据text输入的内容进行调用不同的函数了
所以我们最关键的是要看父进程是否收到了信号,如果没有收到就没有异常(具体如何收到,就涉及到进程等待的知识) 三、 进程等待 3.1 如何理解 3.1.1 是什么 通过系统调用接口wait/waitpid...3.2.1 wait解读 wait:(等待任意一个进程) 1、int *status :输出型参数 int会被当成几部分使用 不关心可设为NULL 问题1:父进程等待,我希望获取子进程的哪些信息呢...,还可以发生在父进程在等待子进程结束从而获取他的状态。 ...也就是系统调用会卡住,会被链接到子进程的一个阻塞队列中等待。...3、int options 0:代表阻塞等待的方式,就是子进程没结束系统调用就一直等 WNOHANG: 代表非阻塞轮询的等待方式,若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待
问题 linux系统是centos 7.x 发现将windows自动打的包发到centos后执行.sh文件出现如下: ?...查询.sh文件的格式,通过vim 打开.sh然后执行如下: :set ff 结果: ? 发现是dos格式是有问题,需要转换成unix。...idea解决方案: 1.打开.sh文件,然后点击右下角CRLF修改为UNIX of OS就OK了 ? 2.在配置文件中,统一添加以下配置 unix ?
crontab是Linux一个定时执行特定任务的程序,网上也有很多使用教程,在这里举一个例子,抛砖引玉。 为了运行.py,建议使用.sh脚本批量运行,并且在.sh内输出日志。...Ubuntu系统crontab设置请参考: https://www.linuxidc.com/Linux/2013-05/84770.htm 建立.sh文件 在目录下新建xxx.sh文件,内容为:.../bin/sh . ~/.bash_profile python /home/price-monitor-server/conn_sql.py ---- 第一行是输出标准日志到crawl_log...第二行是输出标准错误日志到crawl_log_err 第三与第四行是为了实行.sh而设置的环境 第四行及之后就可以执行.py啦 设置crontab 在/var/spool/cron/(你的用户名)文件中添加一行...: */15 * * * * cd /home/xxxxx && sh crawl_item.sh 代表每15分钟去往/home/xxxxxx目录执行一次crawl_item.sh 由于日志在.sh中已经输出
这不得不找到了一个Linux命令:nohup (二)基本用法 nohup command [arg … ] [ & ] 拿python test.py 为例子 一般我们运行命令是直接:python test.py.../start.sh >> /usr/local/node/output.log 2>&1 & 该命令是把nohup的log输出到/usr/local/node/output.log 这个文件中 2).../start.sh 该命令是把nohup的log直接输出到当前目录下并保存为nohup.log (四)查看运行的后台进程 1)当我们把进程运行到后台后,我们再找回的时候,就需要用到: ps -aux|...grep start.sh a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 用ps -def | grep查找进程很方便,最后一行总是会grep自己 用grep...-v参数可以将grep命令排除掉 ps -aux|grep start.sh| grep -v grep 2)查看使用某端口的进程 netstat -ap|grep 8090 3)查看到进程id之后,
基本输入输出三个: 0 标准输入STDIN 1 标准输出STDOUT 2 标准错误STDERR 标准错误流默认是输出到屏幕即标准输出上的。...重定向: 符号 > 输出覆盖 >>输出追加 <输入 ls -al > list 将结果写入list文件中,list没有将创建 ls -al >> list 将结果追加到...list尾部,list没有将创建 上面这种情况只能一次性的改变输入输出方向,要想在终端或shell中永久(也不能算是永久,在退出之前所有的输入输出是有效的)有效,需要用到exec命令,可以用man
在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh):...1、在任何路径下,输入该文件的绝对路径/root/datelog.sh就可执行该文件(当然要在权限允许情况下) ?...2、cd到datelog.sh文件的目录下,然后执行./datelog.sh ?...第二种(这种办法不需要文件具备可执行的权限也可运行): 1、在该文件路径下sh加上文件名字即可,sh datelog.sh ?...2、在任意路径下,sh 加上文件路径及文件名称:sh /root/ datelog.sh ?
领取专属 10元无门槛券
手把手带您无忧上云