@@ -121,7 +121,8 @@ def open(self, *args):
121
121
except (IOError , OSError ):
122
122
val = sys .exc_info ()[1 ]
123
123
if (val .errno == errno .ENOENT or # kernel thread or process gone
124
- val .errno == errno .EPERM ):
124
+ val .errno == errno .EPERM or
125
+ val .errno == errno .EACCES ):
125
126
raise LookupError
126
127
raise
127
128
@@ -302,7 +303,8 @@ def getCmdName(pid, split_args, discriminate_by_pid):
302
303
except OSError :
303
304
val = sys .exc_info ()[1 ]
304
305
if (val .errno == errno .ENOENT or # either kernel thread or process gone
305
- val .errno == errno .EPERM ):
306
+ val .errno == errno .EPERM or
307
+ val .errno == errno .EACCES ):
306
308
raise LookupError
307
309
raise
308
310
@@ -538,9 +540,9 @@ def print_memory_usage(sorted_cmds, shareds, count, total, swaps, total_swap,
538
540
("-" * 33 , " " * 24 , human (total ), "=" * 33 ))
539
541
540
542
541
- def verify_environment ():
542
- if os .geteuid () != 0 :
543
- sys .stderr .write ("Sorry, root permission required. \n " )
543
+ def verify_environment (pids_to_show ):
544
+ if os .geteuid () != 0 and not pids_to_show :
545
+ sys .stderr .write ("Sorry, root permission required, or specify pids with -p \n " )
544
546
sys .stderr .close ()
545
547
sys .exit (1 )
546
548
@@ -560,7 +562,7 @@ def main():
560
562
split_args , pids_to_show , watch , only_total , discriminate_by_pid , \
561
563
show_swap = parse_options ()
562
564
563
- verify_environment ()
565
+ verify_environment (pids_to_show )
564
566
565
567
if not only_total :
566
568
print_header (show_swap , discriminate_by_pid )
0 commit comments