The paper proposes and analyses a generalized sequential preventive maintenance policy of a system subject to shocks. The shocks arrive according to a non-homogeneous Poisson process Ni(t) :t ≥ 0, whose intensity function r(i)(t) varies with the number of maintenance actions (i − 1) that have already been carried out, and the time (t) that has elapsed since the last maintenance action. Upon the arrival of the kth shock, the system is maintained or repaired minimally with probability θ(i,k) and q(i,k) respectively depending on the number of maintenance actions (i − 1) that have already occurred and the ordinal number of the arriving shock (the kth) since the last maintenance. In addition, a planned maintenance is carried out as soon as T − i time units have elapsed since the (i − 1)th maintenance action. If i = N, the system is replaced rather than maintained. The objective is to determine the optimal plan (in terms of N and T − i) that minimizes the expected cost per unit of time. It is shown that under certain reasonable assumptions, a sequential preventive maintenance policy has unique solutions. Various special cases are considered.