Linux执行ls,会引起哪些系统调用
2017-08-23 19:58
801 查看
可以通过strace -o ls.txt ls进行查看:
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 ///打开当前目录这个文件(目录是一种特殊的文件),并返回文件句柄3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, }) = 0 ///取得当前目录文件的属性,比如这里大小为4096
fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents64(3, /* 33 entries */, 4096) = 1104 ///读取当前目录下的文件
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0 ///关闭当前目录文件的句柄
。。。
通过# cat ls.txt | awk -F '(' {'print $1'} | sort | uniq 可以看到所有的命令
access
arch_prctl
brk
close
execve
exit_group
fstat
futex
getdents
getrlimit
ioctl
mmap
mprotect
munmap
open
openat
read
rt_sigaction
rt_sigprocmask
set_robust_list
set_tid_address
statfs
write
shell命令执行机制就是 fork+exec 执行命令,虽然用strace查看引起的系统调用没有fork,不过我想是因为执行任何一个shell命令都会调用fork,所以它就没写了。。。。。
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 ///打开当前目录这个文件(目录是一种特殊的文件),并返回文件句柄3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, }) = 0 ///取得当前目录文件的属性,比如这里大小为4096
fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents64(3, /* 33 entries */, 4096) = 1104 ///读取当前目录下的文件
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0 ///关闭当前目录文件的句柄
。。。
通过# cat ls.txt | awk -F '(' {'print $1'} | sort | uniq 可以看到所有的命令
access
arch_prctl
brk
close
execve
exit_group
fstat
futex
getdents
getrlimit
ioctl
mmap
mprotect
munmap
open
openat
read
rt_sigaction
rt_sigprocmask
set_robust_list
set_tid_address
statfs
write
shell命令执行机制就是 fork+exec 执行命令,虽然用strace查看引起的系统调用没有fork,不过我想是因为执行任何一个shell命令都会调用fork,所以它就没写了。。。。。
相关文章推荐
- Linux执行ls,会引起哪些系统调用
- Linux执行ls,会引起哪些系统调用
- Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程
- linux 系统调用执行过程
- Java调用执行Linux系统命令
- oracle 调用java执行系统命令(linux环境)
- Linux系统调用------通过time系统调用理解系统调用的执行过程
- linux 系统调用执行过程
- linux 系统中调用执行脚本
- Linux中,进入目录、在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.
- Java调用linux系统shell执行命令
- linux 系统调用执行过程
- Linux系统调用------追踪系统调用的执行过程
- Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程
- 《Linux内核分析》(五)——Linux系统调用的执行过程
- linux0.11系统调用的执行过程是怎样的?
- linux0.11系统调用的执行过程是怎样的?
- 系统调用实现Linux命令 ls -al
- 剖析Linux系统调用的执行路径
- Linux中,进入目录、在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.