/usr/share/systemtap/examples/process
NameSizeModeActions
auditbt.meta4290644editdlrm
auditbt.stp6220755editdlrm
auditbt.tcl790644editdlrm
chng_cpu.meta7750644editdlrm
chng_cpu.stp10490755editdlrm
chng_cpu.tcl1400644editdlrm
cycle_thief.meta10820644editdlrm
cycle_thief.stp28930755editdlrm
cycle_thief.txt59740644editdlrm
errsnoop.meta5750644editdlrm
errsnoop.stp10150755editdlrm
forktracker.meta5250644editdlrm
forktracker.stp6010755editdlrm
futexes.meta5200644editdlrm
futexes.stp11180755editdlrm
futexes.txt9440644editdlrm
futexes2.meta5930644editdlrm
futexes2.stp20140644editdlrm
ltrace.meta3140644editdlrm
ltrace.stp30070755editdlrm
ltrace.tcl1220644editdlrm
migrate.meta7460644editdlrm
migrate.stp10370755editdlrm
mutex-contention.meta4790644editdlrm
mutex-contention.stp55590755editdlrm
mutex-contention.tcl790644editdlrm
noptrace.meta5120644editdlrm
noptrace.stp22350755editdlrm
noptrace.txt12120644editdlrm
pfiles.meta4500644editdlrm
pfiles.stp245230755editdlrm
plimit.meta3870644editdlrm
plimit.stp30290755editdlrm
procmod_watcher.meta6570644editdlrm
procmod_watcher.stp24060644editdlrm
proctop.meta6010644editdlrm
proctop.stp42450755editdlrm
proctop.txt86540644editdlrm
proc_snoop.stp11330755editdlrm
proc_snoop_parser.xml8180644editdlrm
proc_snoop_parser_instructions.txt21800644editdlrm
psig.meta3540644editdlrm
psig.stp56160755editdlrm
pstrace_exec.meta5450644editdlrm
pstrace_exec.stp4650755editdlrm
pstree.meta4550644editdlrm
pstree.stp19570755editdlrm
rlimit_nofile.meta3190644editdlrm
rlimit_nofile.stp11510755editdlrm
sched-latency.meta4700644editdlrm
sched-latency.stp5080644editdlrm
sched-latency.txt15660644editdlrm
schedtimes.meta8140644editdlrm
schedtimes.stp39490755editdlrm
schedtimes.txt32780644editdlrm
semop-watch.meta2670644editdlrm
semop-watch.stp8220755editdlrm
sigkill.meta5600644editdlrm
sigkill.stp6560755editdlrm
sigmon.meta6690644editdlrm
sigmon.stp9320755editdlrm
sig_by_pid.meta3570644editdlrm
sig_by_pid.stp10780755editdlrm
sig_by_pid.txt15140644editdlrm
sig_by_proc.meta3640644editdlrm
sig_by_proc.stp8510755editdlrm
sig_by_proc.txt9510644editdlrm
sleepingBeauties.meta5810644editdlrm
sleepingBeauties.stp13640755editdlrm
sleepingBeauties.tcl1400644editdlrm
sleeptime.meta6010644editdlrm
sleeptime.stp14690755editdlrm
spawn_seeker.meta8540644editdlrm
spawn_seeker.stp15260755editdlrm
spawn_seeker.txt13180644editdlrm
strace.meta3850644editdlrm
strace.stp20810755editdlrm
strace.txt36720644editdlrm
syscalls_by_pid.meta5140644editdlrm
syscalls_by_pid.stp6330755editdlrm
syscalls_by_pid.txt5970644editdlrm
syscalls_by_proc.meta5310644editdlrm
syscalls_by_proc.stp6920755editdlrm
syscalls_by_proc.txt11300644editdlrm
syscalltimes62910755editdlrm
syscalltimes.meta4540644editdlrm
syscalltimes.txt114590644editdlrm
thread-business.meta3460644editdlrm
thread-business.stp8660755editdlrm
thread-business.txt28230644editdlrm
threadstacks.meta5850644editdlrm
threadstacks.stp17890755editdlrm
threadstacks.tcl790644editdlrm
wait4time.meta6580644editdlrm
wait4time.stp13470755editdlrm
Edit: /usr/share/systemtap/examples/process/noptrace.stp (2235B)
#! /bin/sh # Disable ptrace(2) on a dynamic list of processes, by rewriting the # incoming arguments on an attempted ptrace(2) syscall. The list of # processes is enlarged upon fork(), shrunken by exit(), and may be # edited interactively with a set of /proc files. # note use of guru mode, to enable changing of syscall arguments //bin/true && exec stap -g $0 ${1+"$@"} global noptrace # map pid->name: list of pids forbidden from ptrace(2) probe begin { # init. noptrace process list with stap -x PID/-c CMD, if given if (target()) noptrace[target()]="?" } probe scheduler.process_fork { # propagate flag to child processes if (parent_pid in noptrace) noptrace[child_pid] = noptrace[parent_pid] } probe syscall.*execve { # update stored pid->name mapping if (pid() in noptrace) noptrace[pid()] = filename } probe syscall.exit { # optional; clean up pid->name mapping table delete noptrace[pid()] } # procfs control files under /proc/systemtap/stap_XXXXX/ probe procfs("blocked").read { # report currently blocked processes foreach (pid in noptrace) $value .= sprintf("%d %s\n",pid,noptrace[pid]) } probe procfs("block").write { # block given pid pid = strtol($value,10) noptrace[pid]="?" } probe procfs("unblock").write { # unblock given pid pid = strtol($value,10) delete noptrace[pid] } # payload global deny_ptrace probe kernel.function("cap_ptrace_traceme").return, kernel.function("cap_ptrace_access_check").return { if (tid() in deny_ptrace) { $return = -1 /* -EPERM */ } } probe syscall.ptrace { if (pid() in noptrace) { # report printf ("%s[%d] ptrace(%d) blocked: ", execname(), tid(), request) # (or if desired, accumulate counts and report at probe end {}) # disable the ptrace call in progress # if it weren't for PTRACE_TRACEME, we could set $pid=1 => -EPERM # instead make the capability check fail with -PERM deny_ptrace [tid()] = 1 } } probe syscall.ptrace.return { # should occur instantly if (pid() in noptrace) { printf ("rc=%d\n", retval) } delete deny_ptrace [tid()] }