????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.144.101.157 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/upstart/ |
Upload File : |
#!/usr/bin/perl use strict; use warnings; my %gettys; my $have_cad = 0; #-----------------------------------------------------------------------------# # Parse /etc/inittab #-----------------------------------------------------------------------------# open INITTAB, "/etc/inittab" or die "Unable to open /etc/inittab: $!"; while (<INITTAB>) { chomp; s/^\s*//; next if /^\#/; next unless length; my ($id, $rlevel, $action, $process) = split /:/, $_, 4; warn "missing id field" and next unless defined $id and length $id; warn "missing runlevel field" and next unless defined $rlevel; warn "missing action field" and next unless defined $action and length $action; warn "missing process field" and next unless defined $process; $have_cad = 1 if $action eq "ctrlaltdel"; $gettys{$1} = [ $rlevel, $process ] if $process =~ /getty.*\b(tty\w+)/; } close INITTAB or warn "Error while closing /etc/inittab: $!"; #-----------------------------------------------------------------------------# # Alter /etc/event.d #-----------------------------------------------------------------------------# unlink "/etc/init/control-alt-delete.conf" unless $have_cad; foreach (qw/tty1 tty2 tty3 tty4 tty5 tty6/) { unlink "/etc/init/$_.conf" unless exists $gettys{$_}; } foreach (sort keys %gettys) { my ($rlevel, $process) = @{$gettys{$_}}; my @job; if (-f "/etc/event.d/$_") { open JOB, "/etc/event.d/$_" or warn "Unable to open /etc/event.d/$_: $!" and next; @job = <JOB>; chomp @job; close JOB or warn "Error while closing /etc/event,d/$_: $!" and next; foreach my $rl (qw/2 3 4 5/) { my $idx; for ($idx = 0; $idx < @job; $idx++) { last if $job[$idx] =~ /^\s*(start|stop)\s+on\s+runlevel\s+$rl\b/; } if ($idx < @job) { if ($rlevel =~ /$rl/) { $job[$idx] =~ s/^(\s*)stop(\s+)/$1start$2/; } else { $job[$idx] =~ s/^(\s*)start(\s+)/$1stop$2/; } } else { if ($rlevel =~ /$rl/) { push @job, "start on runlevel $rl"; } else { push @job, "stop on runlevel $rl"; } } } my $idx; for ($idx = 0; $idx < @job; $idx++) { last if $job[$idx] =~ /^\s*respawn\s*/; # match bare 'respawn' too } if ($idx < @job) { # only match old-style 'respawn process', not bare 'respawn' $job[$idx] =~ s/^(\s*respawn\s+).*/$1$process/; } else { push @job, "respawn"; push @job, "exec $process"; } # Try to fix up effects of previous broken migrations if (@job and $job[$#job] =~ /.*(.+?)exec (\1)$/) { $job[$#job] = "exec $1"; } } else { push @job, "# $_ - getty"; push @job, "#"; push @job, "# Converted from /etc/inittab entry"; push @job, ""; foreach my $rl (qw/2 3 4 5/) { if ($rlevel =~ /$rl/) { push @job, "start on runlevel $rl"; } else { push @job, "stop on runlevel $rl"; } } push @job, ""; push @job, "stop on shutdown"; push @job, ""; push @job, "respawn"; push @job, "exec $process"; } open JOB, ">/etc/event.d/.$_" or warn "Unable to write to /etc/event.d/.$_: $!" and next; print JOB map { "$_\n" } @job; unless (close JOB) { warn "Error while closing /etc/event.d/.$_: $!"; unlink "/etc/event.d/.$_"; next; } unless (rename "/etc/event.d/.$_", "/etc/event.d/$_") { warn "Unable to replace /etc/event.d/$_: $!"; unlink "/etc/event.d/.$_"; next; } }