Linux命令执行过程

在shell中可执行命令分为:
  内部命令:由shell自带,会随着系统启动

  外部命令:在系统中有对应的可执行文件

通过type可查看命令是否为内部命令

[[email protected] ~]#type pwd   # 内部命令
pwd is a shell builtin
[[email protected] ~]#type top   # 外部命令
top is /usr/bin/top  

内部命令直接从内存中读取而外部命令需要从系统文件中读取

[[email protected] ~]#echo $PATH  # 查看外部命令搜索路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]#which top # 查看外部命令可执行文件的路径
/usr/bin/top
[[email protected] ~]#whereis top # 查看外部命令可执行文件的路径以及帮助文档路径
top: /usr/bin/top /usr/share/man/man1/top.1.gz
[[email protected] ~]#hash # 为了加快外部命令的执行过程会放入缓存表
hits    command
   1    /usr/bin/cal
   3    /usr/bin/tail
   2    /usr/bin/timedatectl
  15    /usr/bin/date
   1    /usr/bin/cat
   5    /usr/bin/whereis
   2    /usr/bin/ls

命令执行顺序:内部命令>hash表中的命令>外部命令

原文地址:https://blog.51cto.com/14322729/2392937

时间: 2024-09-28 18:25:04

Linux命令执行过程的相关文章

linux命令执行过程详解

1.执行命令输入命令后回车提请shell程序找到键入命令所对应的可执行程序或者代码,并且由其分期后,提交给内核分配资源将其运行起来.在shell中可执行的命令有俩类:内部命令:由shell自带的内部集成命令help 可以查看内部命令列表 [[email protected] ~]# help GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu) These shell commands are defined internal

linux 命令执行判断依据--;,&&,||

命令执行判断依据--;,&&,|| 在linux运维过程中或者日常linux系统操作过程中会同时执行多条命令,这样的话需要通过我们的多重命令方式进行处理. 通过使用';'分号执行多个命令,如例: #sync;sync;shutdown -h now 通过判断执行命令,&&/||执行情况 如例: cmd1&&cmd2: 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2 若cmd1执行完毕且错误执行($?!=0),则开cmd2不执行 cmd1||cm

Linux命令执行顺序— ||和&&和; 比较

Linux命令执行顺序— ||和&&和; command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. command1 || command2: 如果||左边的command1执行失败(返回1表示失败),就执行&&右边的command2. command1;command2: 命令顺序执行 //第一个命令执行不成功,第二个命令才执行 [[email

adb命令执行过程解析

本文将以"adb connect "和"adb shell"两个命令为例,解析adb命令的实现过程. 一.adb connect命令执行过程 目前adb支持两种形式建立host端和device端的连接:USB和网络. adb connect命令的作用就是建立host和device之间的TCP/IP连接. 1.client端 adb_commnadline() -> adb_query() -> adb_connect("host:connect

Java调用Linux命令执行

调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linux command)方法可以直接执行linux命令,而Process类可以接收Runtime.getRuntime().exec()类的返回值,并提供了waitFor()方法和destr

Redis 命令执行过程(下)

在上一篇文章中<Redis 命令执行过程(上)>中,我们首先了解 Redis 命令执行的整体流程,然后细致分析了从 Redis 启动到建立 socket 连接,再到读取 socket 数据到输入缓冲区,解析命令,执行命令等过程的原理和实现细节.接下来,我们来具体看一下 set 和 get 命令的实现细节和如何将命令结果通过输出缓冲区和 socket 发送给 Redis 客户端. set 和 get 命令具体实现 前文讲到 processCommand 方法会从输入缓冲区中解析出对应的 redi

CentOS 7.3验证Linux命令执行的优先级

在Linux中,不同的目录下可能有相同的文件.虽然同名,两个文件的作用却完全不同. 执行同一命令,可能会显示完全不同的结果.如pwd本来显示当前工作目录,我们却可以定义别名使它输出时间. 要了解命令执行的先后顺序,首先我们要明白内部命令和外部命令的不同.使用type command可以查看命令类型. 我们可以看到以上四个命令的显示结果是完全不同的. 这里pwd是内部命令,cal是hash(缓存)命令,ls是别名,date则是外部命令. 这里要引进一个变量PATH,通过echo,我们可以查看变量P

Linux命令执行的屏幕输出内容重定向到日志文件

摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到文件,比如 echo "hello,word">> temp.txt 那么我现在想把hadoop或者spark的命令执行的屏幕输出到文件怎么办?很简单,命令如下 hadoop jar *.jar $mrClass > mr.log 2>&1 注意上面命令 *

CTF Linux 命令执行常规bypass

截断符 常见的RCE的形式是给一个ping的命令执行,只需要输入ip,然后返回ping ip的输出信息 常见的用来截断的符号 &  &&  ;  |  || windows或linux下: command1 && command2 先执行command1后执行command2 command1 | command2 只执行command2 command1 & command2 先执行command2后执行command1 | && ; &a